2008-06-05から1日間の記事一覧

ラムダ計算で除算・剰余

sub、iszero、あと再帰でなんとか書けた。 ; TRUE := λx y.x (defvar true (lambda (x) (lambda (y) x))) ; FALSE := λx y.y (defvar false (lambda (x) (lambda (y) y))) ; ISZERO := λn.n (λx.false) true (defvar iszero (lambda (n) (app n ($ true fals…

Grass

Ruby版のインタプリタのソースコードが大分読めてきたもんで、コレもしかして自分でもなんとか書けるんじゃ? と思ってとりあえずパーサを書き始めたところにScheme版キター!! 実装の動機の1行目吹いた。参考にさせてもらおう。意味論のとこの解説が凄くあり…

数字の分割

なんかxyzzyでProject Eulerやってる同志発見 → クリップしとこ → はてブでもないのに速攻捕捉された(! という流れで、ちゃんと書いた自分のコードを晒してみる。Project EulerのNo.20 (defun str-to-digits (s) (mapcar #'(lambda (c) (- (char-code c) 48…