4
に私がいるこの希望的観測は、スキームではClojure
(define (f x) (g x))
(define (g x) (+ x 42))
(g 0)
ような何かをするために使用された、私は他のmomentaneously無制限の機能の面で関数を定義するために使用されました。 なぜClojureではこれができないのですか? ClojureのREPLで、例えば、以下の事がREPLでコンパイルされているすべての行である
(defn f [x] (g x))
(defn g [x] (+ x 42))
(g 0)
なぜREPLが自動的に未定義の機能を「宣言」しないのですか?それは簡単ではないでしょうか? – Matteo
@Matteo Rich Hickeyは[このHNコメント](https://news.ycombinator.com/item?id=2467809)でこの動作の根拠を示しています。これは基本的にどのような種類のエラー未定義のシンボル:ランタイムまたはコンパイル時間? Common Lispは実行時エラーを選択しますが、Clojureはコンパイル時エラーを選択します。 –
@CurtisSummers:Common Lispは、コンパイル時の警告、遅延バインディング、およびランタイムエラーを選択します。 –