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にしました。
…うーん、やっぱり違うかも。
…うーん、やっぱり違うかも。
CommonLispはLisp-2なので#'を使って名前空間を指定しますが、ClojureはLisp-1なので#'に相当するものはありません。
返信削除Lisp-2 : 関数の名前空間が別にある
Lisp-1:関数の名前空間は一緒
と考えてください。
@匿名さん
返信削除なるほど、#'は関数名前空間への参照なんですね。ありがとうございます。