lambda

Grass on Grass

みどりの日なのでGrass書きました。今回はGrass言語インタプリタ上で動くGrass言語インタプリタ。 https://github.com/youz/Grass_on_Grass Grassで実装されたGrassインタプリタ この8kbとちょっとの草原を手で植えるのはさすがに厳しいので Grasspiler を使…

SATySFiで数式を生成する ~ラムダ計算編~

これは2018 SATySFi advent calendar 13日目の記事です。[前] [次] たとえば何かの資料を書いてる中でラムダ計算の説明が必要になった時、ちょっと込み入ったサンプルを手で書こうとしたら大変です。 PRED 5 = (λnfx.n (λgh.h(gf)) (λu.x) (λu.u)) (λfx.f(f(…

pow

高階関数クイズ - Oh, you `re no (fun _ → more) チャーチ数の冪乗計算を知っていれば。 POW := λbe.e b http://en.wikipedia.org/wiki/Lambda_calculus これ紙に書いて確かめてみるととても面白い。 という訳で twice twice twice twice add1 0 = (((twice…

GrassでLLGolf Hole 8 準備

(load "grass-primitive.l") (defun % (&rest arg) (reduce #'funcall arg)) (defun $ (&rest arg) (reduce #'funcall arg :from-end t)) (defvar y (lambda (f) ($ (lambda (g) ($ f (lambda (x) (% g g x)))) (lambda (g) ($ f (lambda (x) (% g g x))))))…

ラムダ計算でナベアツ的な何か

(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…

ラムダ計算遊び用コード まとめ

昨日見つけたページに倣ってλ項の名前には全部頭に%をつけて、ついでに左から適用してく関数を%としてみた。 とりあえずxyzzyとSBCLで動いてるけど、真偽値の辺りちゃんとテストしてない。 ; utility (defun % (&rest arg) (reduce #'funcall arg)) (defun $…

Grassとラムダ計算とLisp

Lispのlambda式の使い方が分かってきた頃に書き溜めたラムダ計算遊び用のコードと組み合わせてみる。 まず、繰り返し関数適用してく時にCommonLispだとfuncallが大変ウザくなるので、省略するための簡単なユーティリティー関数。 (defun app (&rest arg) (re…

Grass再挑戦

ちょっと草植えときますね型言語 Grass 日本語版解説 最初に見たときは面白そうなのにほとんど理解できなくて悲しかったけど、λ計算とLispの基礎をかじった今なら少しは書けそうだ。で、一昨日ちょっと書いたプリミティブ関数を書き直し。 w (文字関数) 文字…