[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

タグ

lispとlambdaに関するpochi-mkのブックマーク (3)

  • Lisp in Small Pieces 1.4 Evaluating Atoms - ぱたへね

    Lisp In Small Piecesの1.4のまとめ。 special form について 厳密にはformで無くてもspecial formと呼ぶ。 このによると、Schemeは、quote if set! lambda の4つ。Common Lispは30以上のspecial formを持つ。気になって、Scheme処理系の言語リファレンスをみていても全然4つじゃない。 http://www.gnu.org/software/mit-scheme/documentation/mit-scheme-ref/Special-Forms.html http://practical-scheme.net/gauche/man/gauche-refj_26.html#g_t_00e6_009d_00a1_00e4_00bb_00b6_00e5_00bc_008f Gaucheプログラミング

    Lisp in Small Pieces 1.4 Evaluating Atoms - ぱたへね
    pochi-mk
    pochi-mk 2013/06/20
    prog2 はやっぱり謎だ。使っていたコードとかないのかな?
  • curryは飲み物 - 146,000

    概要 LISPでカリー化された関数を定義するマクロを作ってみた.カリー化された関数は,必要な数の引数が渡されればただちに評価されて結果を返すが,引数の数が足りなければ部分適用された関数となる.それもまたカリー化されている. 動機 昨日も一日中椅子に座ってJava書いて……今日も一日中椅子に座ってJava書いて……きっと来週も再来週も一日中椅子に座ってJava書いて……毎日毎日同じ事の繰り返しで,生きてる気がしないんだYO! 簡単なカリー化 定義通りカリー化するだけなら,こんなふうにすればいい. (defun currying (arg-list &rest body) (let* ((args (reverse arg-list)) (last-arg (car args)) (other-args (cdr args))) (reduce #'(lambda (acc elem) `(l

    curryは飲み物 - 146,000
    pochi-mk
    pochi-mk 2013/05/08
    よく分かるカリー化、というかこれ読んでカリー化というものがよくわかった気になった(自分ではまだ書けないけどw)。
  • 遅延リスト遊び - Emacsで学ぶLazyな世界(前編) - Code Aquarium

    (これは、Lisp Advent Calendar 2012の20日目の記事です。) 長いので前後編に分けます。お暇な方はどうぞ。 -*- delayとforce -*- 正格評価の言語でもクロージャがあれば遅延評価を行うことができます。計算式をクロージャに包んでしまえば、クロージャが呼び出されるまで中の式は評価されません。*1 先行評価 (+ 2 3) ;=> 5 遅延評価 (setq p (lambda () (+ 2 3))) ;=> 計算式を包んだクロージャ (funcall p) ;=> 5 遅延評価したい式をいちいちlambdaで包むのは面倒だし、lambdaだけでは「式を遅延評価させたい」という意図が伝わりません。ライブラリにしましょう。 (defmacro delay (expr) `(lambda () ,expr)) (defalias 'force 'funcall)

    遅延リスト遊び - Emacsで学ぶLazyな世界(前編) - Code Aquarium
  • 1