Scheme

プログラミングGauche p.112 delete-1についての練習問題

未だnonLisp脳なせいか、ヒント読んでも分からない。 ごり押しで下のコードができた。一応テストは通るし、末尾再帰なので速い。 (define (my-delete-1 elt lis . options) (define orig-lis lis) (let-optionals* options ((cmp-fn equal?)) (define (loop …

Yコンビネータと遭遇

Schemeへの道でScheme勉強中のこと。 9. lambda式の最後の 「[参考]lambda式による再帰呼び出し関数」がさっぱり分からなかった。 けれど糸口を発見。 (define Y (lambda (f) ((lambda (m) (f (lambda (a) ((m m) a)))) (lambda (m) (f (lambda (a) ((m m) a…

末尾再帰による最適化の効果

Schemeで簡単なべき乗関数を書いて、末尾再帰の効果を実感してみる。Schemeの処理系にはGaucheを使う。 Schemeとは?末尾再帰とは? Schemeは関数型プログラミング言語LISPの方言の一つ。 末尾再帰は、関数末尾での再帰呼び出しの事。最適化により単純なルー…