ラムダ計算でナベアツ的な何か
(load "lambda-calc.l") (load "grass-primitive.l") (defvar %floor (lambda (m) (lambda (n) (funcall (% (% %ge m n) (lambda () (let ((c (% %floor (% %sub m n) n))) (% %cons ($ %succ %car c) (% %cdr c)))) (lambda () (% %cons %0 m))))))) (defun nabe () (let* ((chn (% (cn 247) succ w)) (%3 (cn 3)) (%10 (cn 10)) (cr (% (cn 150) succ w)) (lf (% (cn 147) succ w)) (has3? (lambda (self) (lambda (n) (let ((c (% %floor n %10))) (funcall (% (% %eq %3 (% %cdr c)) (lambda () %t) (lambda () (funcall (% (% %iszero (% %car c)) (lambda () %f) (lambda () (% self (% %car c)))))))))))) (nabe? (lambda (n) (% %or ($ %iszero %cdr (% %floor n %3)) (% %y has3? n)))) (prn (lambda (n) (% n out (% (% nabe? n) chn w)) (% out cr) (% out lf))) (itr (lambda (self) (lambda (m) (lambda (n) (% prn m) (funcall (% (% %eq m n) (lambda () m) (lambda () (% self (% %succ m) n))))))))) (% %y itr (cn 1) (cn 40))))
実行
* (nabe) w ww nnn wwww wwwww nnnnnn wwwwwww wwwwwwww nnnnnnnnn wwwwwwwwww wwwwwwwwwww nnnnnnnnnnnn nnnnnnnnnnnnn wwwwwwwwwwwwww nnnnnnnnnnnnnnn wwwwwwwwwwwwwwww wwwwwwwwwwwwwwwww nnnnnnnnnnnnnnnnnn wwwwwwwwwwwwwwwwwww wwwwwwwwwwwwwwwwwwww nnnnnnnnnnnnnnnnnnnnn wwwwwwwwwwwwwwwwwwwwww nnnnnnnnnnnnnnnnnnnnnnn nnnnnnnnnnnnnnnnnnnnnnnn wwwwwwwwwwwwwwwwwwwwwwwww wwwwwwwwwwwwwwwwwwwwwwwwww nnnnnnnnnnnnnnnnnnnnnnnnnnn wwwwwwwwwwwwwwwwwwwwwwwwwwww wwwwwwwwwwwwwwwwwwwwwwwwwwwww nnnnnnnnnnnnnnnnnnnnnnnnnnnnnn nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww #<CLOSURE (LAMBDA (F)) {AF746D5}>
floorは商と剰余をconsして返す関数。
後は草を植えるだけ…
これはあれだ、田植えのように一日でやるのは無理だから、植林のつもりで。