Kahua

Schemeによる継続ベースのWebフレームワーク

吉田 裕美 --- EY-Office

http://d.hatena.ne.jp/yuum3/

(λ)

Lispの世界へようこそ!

Kahuaとは?

Kahuaの要素

Scheme

Gauche

S式

REPL

OO-DB

Gaucheのオブジェクトシステム


    ;; Class定義
    (define-class <2d-point> () (x y))
      
    ;; インスタンスの作成
    (define a-point (make <2d-point>))
	
    ;; method定義
    (define-method move-by! ((pt <2d-point>) dx dy)
       (inc! (x-of pt) dx)
       (inc! (y-of pt) dy))
  
注) <> は単なるシンボル名の一部で特別な記号ではありません

継続 Continuation

継続の定義

継続のサンプル

(define *save* ())
(define fact
  (lambda (x)
    (if (= x 1)
        (call/cc
         (lambda (cc)
           (set! *save* cc)
           1))
      (* x (fact (- x 1)))))) 
;
(fact 3) => 6
; ここで、*save*の値は (lambda(a) (* 3 (* 2 a)))
(*save* 1) => 6
(*save* 2) => 12
  

Kafuaサンプルコード

emacsで見てみましょう。

継続はSchemeだけのものではない

(λ)

((ご清聴) ありがとうございました)