2014-09-01から1ヶ月間の記事一覧

microKanrenで始めるlogic programming入門 (2)

単一化しようぜ ==の動作を見てみよう。 (define (== u v) (lambda (s/c) (let ((s (unify u v (car s/c)))) (if s (unit `(,s . ,(cdr s/c))) mzero)))) 前にも説明したように(== u v)はuとvが同一であることを宣言している。この時==は引数のstateであるs/…

microKanrenで始めるlogic programming入門 (1)

microKanrenとは microKanrenの話の前にまずminiKanrenの紹介を。 miniKanrenは埋め込み言語としての利用を想定した論理プログラミング言語で、実際に各種言語上での実装が存在する。The Reasoned SchemerはminiKanrenをscheme上での実例を示しながら紹介す…