2010/01/18

Common Lispの「#'」オペレータはClojureでいうなに?

Clojureを勉強しようと思って「On Lisp」を読み始めました。Common Lispで書かれているソースコードをClojureに翻訳しながら読もうというたくらみです。
で、さっそくつまずきました。p.12-13にこんなコードがありました。
> (defun double (x) (* x 2))
> #'double
#<Interpreted-Function C66ACE>
このプログラムの「#'」オペレータをClojureでどう書くのかがわかりません。でも見た感じ、type関数に近いような気がします。
> (type double2)
chap02.defun$double2__124
> (type 10)
java.lang.Integer
doubleという関数を定義しようとしたらエラーになったので、double2にしました。
…うーん、やっぱり違うかも。

2 件のコメント:

  1. CommonLispはLisp-2なので#'を使って名前空間を指定しますが、ClojureはLisp-1なので#'に相当するものはありません。
    Lisp-2 : 関数の名前空間が別にある
    Lisp-1:関数の名前空間は一緒
    と考えてください。

    返信削除
  2. @匿名さん
    なるほど、#'は関数名前空間への参照なんですね。ありがとうございます。

    返信削除