vieweditattachhistoryswikistopchangessearchhelp

M 式

metaexpression 。--sumim

"metaexpression" でぐぐったらPDFばっかりで辟易しました。
http://www.em.edu.waseda.ac.jp/~moriya/education/CAI/infomath3/LISP.pdf
から抜粋すると、
M 式とは次の形をした式であるとして、再帰的に定義する:
(i) 定数
(ii) 識別子
(iii) 関数[M 式; M 式; … ;M 式]
(iv) [M 式→M 式; …; M 式→M 式]
だそうです。
ちなみに ivの A→B; C→D; ‥‥‥ は、条件式(COND)のこと。
実例も載せると、

(8) ハノイの塔問題を解くプログラム
Hanoi[n;A;B;C] = [n=0→NIL;
                  T→append[Hanoi[n-1;A;C;B]];
                            list[A;C];
                            Hanoi[n-1;B;A;C]]]
S式に直すと

(DEFUN HANOI (N A B C)
       (COND ((EQUALP N 0) NIL)
             (T (APPEND (HANOI (SUB1 N) A C B)
                        (LIST A C)
                        (HANOI (SUB1 N) B A C)))))
再帰してます。
場合分けと関数引数がどちらも "[" と ";" と "]" を使っているのがちょっと分かりにくいかも。--SHIMADA

S 式に対して、人間に分かりやすい式…程度の説明しかなくて難儀していました(笑)。--sumim

このページを編集 (1110 bytes)


Congratulations! 以下の 1 ページから参照されています。

This page has been visited 5213 times.