タグ

gaucheに関するkuyのブックマーク (2)

  • Practical Scheme

    このページでは、プログラミング言語Schemeの紹介、および 自作のSchemeのライブラリやアプリケーションの紹介をしてゆきます。 特に、ファイルをパーズしてテキストファイルを生成したりとか、 プロセスを監視したりとか、ちょっとしたGUIをでっちあげる と言った、職業プログラマとしてやってく上で避けて通れない雑用に便利な ライブラリが中心になる予定です。 SchemeはLisp系の言語で、見かけはLispに良く似ています。 Lispと聞いたら人工知能用言語だとか、もう古くさい言語だとか思われることも 多いんですが、CommonLispで書かれた実用的なアプリケーションはいろいろ ありますし、Schemeも拡張言語としてそれなりに使われています。 ただ、いかんせんマイナーな言語であることは間違いなく、メンテできる人が居ない とか他に分かる人が居ないという理由で採用が見送られることがあるのは

    Practical Scheme
  • 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 (

  • 1