5

私は Norvig の AI プログラミングのパラダイムを使用して Common Lisp を独学していますが、私が理解できないことに出くわし、彼は説明しませんでした。

(defun mappend (fn the-list)
  (apply #'append (mapcar fn the-list)))

次のように高階関数を呼び出すことと、なしでhigherOrderFunc #'funcName funcArg呼び出すときに彼が行うことの違いは何ですか? 高階関数を呼び出すときに必要ですか ?mapcar#'#'

4

3 に答える 3

6

#'の構文糖衣はfunction:#'fooとして読み取られ(function foo)ます。

Function指定された名前にバインドされた関数値を返す特別な演算子です。関数をパラメーターとして渡す場合、そのパラメーター (この場合はfn) の値は関数にバインドされます。それを別の関数に渡すには、変数名を呼び出しフォームに入れるだけです。ただし、名前の関数値を取得するには、 でアクセスする必要がありますfunction

于 2013-04-10T22:25:31.943 に答える