写経

近頃写経が来ているというのでおいらも乗ってみることにしました.
が,しかし.
思ったようには進まず...
昨日から始めたのですが,題材はこれ.

Prologユーティリティライブラリ

Prologユーティリティライブラリ

タイトルを見ての通り,本書は Prolog による便利な述語 (関数みたいなもの) を解説しているもの.
し・か・も
その述語の定義 (実装みたいなもの) とその使い方を1ページにまとめてくれているという,実に写経ラビリティの高い一冊なのです.
例えば最初に出てくるのはこんな感じ.

述語 append/3
解説 append(X, List1, List2) は要素 XList1 の先頭に付け加えた新しいリストを List2 として返す.
モード append(?, ?, ?)
定義
append(X, List, [X|List]).
注記 上記の基本的な機能の他に,2番目の例に示すようにリストの頭部と尾部を返すのに用いられることがある.
?- append(john, [mary, tom, ann], L).
L = [john, mary, tom, ann]

?- append(X, Y, [23, 14, 77, 6]).
X = 23
Y = [14,77, 6]

?- append('A', ['C', 'B'], ['C', 'B', 'A']).
no
関連述語 conc/3
member/2
head/2
tail/2

こんな調子でいくつだろ? 100 個近くあるのかな? それくらいの述語が紹介されているわけです.
なので,こいつの「定義」と「例」をひたすら写経してやろうと昨日誓ったという次第.
が,タイプの練習をしているわけではないので分からないところがあれば止まっちゃうわけでして... 心より恥じる.
ともあれ (JW),こういう「○○クックブック」みたいな本って,やりたいことがあるけどやり方が分からない時に調べればいいやって感じで普段は持ってても読まずに積んでおく本というのがおいらにとっての位置づけだったのですが (そうじゃない本も読まずに積んでますが),「写経」というムーブメントのおかげで今後はむしろこういう本の方がありがたかったりして?


ちなみになんで Prolog なんか写経しているかというと,物事を宣言的・形式的に表現する,つまり述語論理で表現できるようになりたいから.要するに「論理脳のつくり方」としてやってみようということです.
というのもですね,何度も何度も挫折している「ソフトウェア使用記述の先進技法−Z 言語 (isbn:481018563X)」とか読めるようになりたいというか,形式的に仕様記述できるようになりたいと思っていたりするわけなんですよ.
でもね,こういう本読んで自分でいろいろ書き出してみても,それが自分の思ったとおりのものを表現しているのか確認のしようがなかったりするわけで.それ以前に思っていることをどう表現していいか分からなかったり.
なんか英語みたいだなぁ.(^^;
UML の一部でもある OCL なんかも同じですね.
そこで Prolog.これならなんたってプログラミング言語なので,動かして確認しながら学習できる!!
そんなわけで (どんなわけで?),30 代のうちに Prolog を多少なりとも習得したいなぁと思う今日この頃です.あと CLOS もね.