タグ

lispに関するtjun1のブックマーク (2)

  • Emacs Lispにnamed-letが追加されてた

    つい最近まで知りませんでした… Schemeを使っている方には「letで末尾再帰するときのアレをEmacsでも使えるようにする」というので通じるとは思うのですが… 総和っぽいのを求める関数を定義してみましょう。 (defun sum-rec (n &optional sum) (if (<= 0 n) (sum-rec (1- n) (+ n (or sum 0))) sum)) (sum-rec 100) ;=> 5050 アルゴリズムも使い方もめちゃ簡単なのですが、この実装には問題があります。 Lispに限らずよくあるプログラミング言語には、関数呼び出しの「深さ」と、その上限という概念があります。関数呼び出しをして、呼び出された関数から関数を呼ぶと深さは1追加され、その関数が実行終了すると深さは1減ります。 なぜこの呼び出しの深さという数が大事なのかというと、一般的なプログラムでは繰り

    Emacs Lispにnamed-letが追加されてた
  • Clojureはじめました

    Clojureはじめました 最近、自分の開発ではClojureを使っています。今まで仕事で使っていた中心的な言語がJavaだったので、正反対の言語を使っているということになるけど、意外と違和感はありません。型チェックがないのがしんどいとか、名前の一発変換が安心してできない、とかいうありがちな不満はありますけども。 Clojureというと、LLというよりも「LISP」ってことで有名に思います。この、脳味噌の大シフト感が結構楽しいのです。もともと「Javaと似たような系統だけどもっと楽に書ける」というのには強い興味を持てなくて、もっと一気に考え方が異なるようなものに興味を持ってました。Haskellとか。Clojureというのは、今までの経験を生かしつつも、言語的には大移動ということで、相性は良かったのかもしれない。 Clojureに完全移行したのかというとそういうこともなくて、Javaベース

  • 1