HoareのCSPとM式モドキ

ホーアCSPモデルの理論という本を読みました。
この本は、前書きに
「実装例はLISPのサブセットで書かれている」
と書いてるんですが、いざ中身を見てみると

prefix(c,P)=λx. if x=c then P
else "BLEEP

M式のようなヘンテコなプログラムが出てきます。
関数定義が数式みたいに=で行われていたり、
lambdaがChurchのラムダ計算の記法みたいになっていたり、
ifが全く別の言語みたいに書かれていたり、
単引用符’が二重引用符”になっていたり、かなりフリーダムです。
一応、これにはフォローがあり、

LISP関数を定義するためにここで用いた表記法は,まったく正式なものではない.
したがって,これらは実際の各LISPシステム上で用いられている従来のS式型式に合わせて
変換する必要がある.

とかいてあります。「S式型式」って原文ではどうなってるんだろう…
そして、この後にLISPkitでの例が載っています。
(追記)
「S式型式」は原文では”S-expression form”となっていました。
これってどうなんだろう。「S式を使った形式」くらいのほうが分かりやすいような…

(prefix
lambda
(a p)
(lambda (x) (if (eq x a) p (quote BLEEP))))

LISPkitという実装は初めて聞きましたが、結構有名みたいです。
代入操作がなく、遅延評価の機構を持ってるとか。
せっかくこんな面白いものがあるのに、実装例は何故かM式モドキで書かれています。
ただ、この本に登場するプログラムは、関数が返した関数を呼び出して、
そこから、新たに関数が生成されて…
といったように、高階関数が多用されており、
S式でなくてもLISPっぽさが溢れていて楽しいです。
ちなみに、訳者あとがきには次のような一文があります。

ここではあの悪名高き括弧を多用したS式ではなく,
アルゴル風な表記法が用いられているため,
意味を汲み取るのにほとんど困難はないようになっています.

「悪名高き括弧を多用したS式」にワラタ。

2 Responses to “HoareのCSPとM式モドキ”

  1. tui より:

    >「S式型式」って原文ではどうなってるんだろう…
    http://www.usingcsp.com/
    で原書のPDFがダウンロードできますよ。

  2. zick より:

    ありがとうございます。
    助かりました。

Leave a Reply