cpsに関するmmoheiのブックマーク (2)

  • Karetta|Gaucheプログラミング(立読み版)|継続渡しスタイル

    継続渡し形式 階乗factから始めましょう。 ;; 階乗の普通の定義 (define (fact n) (if (= n 0) 1 (* n (fact (- n 1))))) 上記の階乗factの定義は 引数nが0なら1を返す(基底条件) それ以外ならn-1の階乗にnを掛けたものを返す(再帰条件) となっています。 これをfactから直接値を返すのではなく、 返すべき値を継続手続きと呼ばれるものに渡します。 継続手続き自体は特別な関数ではありません。 単に、来返り値を返すところで、その手続きに「あとはよろしく」と 残りの処理を委ねてしまいます。 そういう使い方をされる手続きのことです。 ;; 継続渡し形式の階乗の定義 (define (fact/cps n cont) (if (= n 0) (cont 1) (fact/cps (- n 1) (lambda (a) (cont (

    mmohei
    mmohei 2014/05/13
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    mmohei
    mmohei 2014/05/13
  • 1