Lisp eval かるた
hirosk
バイナリかるた
バイナリかるた
(letrec ((move (lambda (a b) (list ‘move a ’to b)))
(hanoi (lambda (a b c n)
(if (= 0 n) ()
(if (= n 1) (list (move a c))
...
Lisp eval かるた
(car ‘(a b)) a
eval
かっこ かだぁ くぉーと かっこ
えー びー こっか こっか
えー
car
えばった!
(caddar
‘((a b c)
d))
c
eval
かっこ かどどあぁ
くぉーと かっこ かっこ
えー びー しー こっか
でー こっか こっか
しー
caddar
えばった!
(append
‘((a b)
(c d e))
(a b c d e)
eval
かっこ あぺんど くぉーと
かっこ かっこ えー びー こっか
かっこ しー でー いー こっか こっか
かっこ えー びー
しー でー いー こっか
appe...
((lambda (x)
(cons x x))
‘a)
(a . a)
eval
かっこ かっこ らむだ かっこ えっくす こっか
かっこ えっくす えっくす こっか
くぉーと えー こっか
かっこ えー ぽち
えー こっか
lambda
え...
14
eval
かっこ れっとれく かっこ かっこ たらい かっこ
らむだ かっこ えっくす わい ぜっと こっか
かっこ いふ かっこ だいなりいこーる えっくす わい
こっか わい
かっこ たらい かっこ たらい かっこ まいなす えっくす...
まとめ
• 楽しみながら神言語が身に付く、Lisp eval かるた
の着想を得て提案した
• 「えばった!」の掛け声とともに札を取るなど、競
技としても楽しめることが考察される
• Lisp インタプリタの具体的な動作が自然に覚えら
れる特徴...
Upcoming SlideShare
Loading in …5
×

Lisp eval かるた

1,539 views

Published on

Traditional Japanese card game, karuta, for studying Lisp evaluation

Published in: Software

Lisp eval かるた

  1. 1. Lisp eval かるた hirosk
  2. 2. バイナリかるた
  3. 3. バイナリかるた
  4. 4. (letrec ((move (lambda (a b) (list ‘move a ’to b))) (hanoi (lambda (a b c n) (if (= 0 n) () (if (= n 1) (list (move a c)) (append (hanoi a c b (- n 1)) (cons (move a c) (hanoi b a c (- n 1))))))))) (hanoi ‘a ’b ‘c 2)) ((move a to b) (move a to c) (move b to c)) 括弧ってすてきだよね? ネスト天国
  5. 5. Lisp eval かるた
  6. 6. (car ‘(a b)) a eval かっこ かだぁ くぉーと かっこ えー びー こっか こっか えー car えばった!
  7. 7. (caddar ‘((a b c) d)) c eval かっこ かどどあぁ くぉーと かっこ かっこ えー びー しー こっか でー こっか こっか しー caddar えばった!
  8. 8. (append ‘((a b) (c d e)) (a b c d e) eval かっこ あぺんど くぉーと かっこ かっこ えー びー こっか かっこ しー でー いー こっか こっか かっこ えー びー しー でー いー こっか append えばった!
  9. 9. ((lambda (x) (cons x x)) ‘a) (a . a) eval かっこ かっこ らむだ かっこ えっくす こっか かっこ えっくす えっくす こっか くぉーと えー こっか かっこ えー ぽち えー こっか lambda えばった!
  10. 10. 14 eval かっこ れっとれく かっこ かっこ たらい かっこ らむだ かっこ えっくす わい ぜっと こっか かっこ いふ かっこ だいなりいこーる えっくす わい こっか わい かっこ たらい かっこ たらい かっこ まいなす えっくす いち こっか わい ぜっと ... 14 たらい回し関数 えばった! (letrec ((tarai (lambda (x y z) (if (<= x y) y (tarai (tarai (- x 1) y z) (tarai (- y 1) z x) (tarai (- z 1) x y)))))) (tarai 14 7 0))
  11. 11. まとめ • 楽しみながら神言語が身に付く、Lisp eval かるた の着想を得て提案した • 「えばった!」の掛け声とともに札を取るなど、競 技としても楽しめることが考察される • Lisp インタプリタの具体的な動作が自然に覚えら れる特徴を持つ – レキシカルスコープ – 再帰 – ラムダ式 – 束縛 – 連想リスト – 閉包 ...

×