私が理解する限り、#' <object>
は(function <object>)
の略語です。lispでの "#"の動作
しかし、私は適用機能で#'
を使用している間に、異なる動作に気づいた。
例
(apply '+ '(1 2)) => Works and give 3
(apply (function +) '(1 2)) => 3
しかし
(apply '# '(1 2)) => Err!!
私が理解する限り、#' <object>
は(function <object>)
の略語です。lispでの "#"の動作
しかし、私は適用機能で#'
を使用している間に、異なる動作に気づいた。
例
(apply '+ '(1 2)) => Works and give 3
(apply (function +) '(1 2)) => 3
しかし
(apply '# '(1 2)) => Err!!
referenceに記載されているように:
#'name
が(function name)
の略語として使用されてもよい記法。
'a
が(quote a)
と同等であるので、シンボル#
を引用するだけの方法で使用される構文は#'
であることに注意してくださいではなく、'#
、。
あなたが使用する必要があります。一般的には
(apply #'+ '(1 2))
文字が続く文字#
は値を入力するための特別な意味を持っています。例えば、#\
は、#\ Spaceのような文字を読むためのもので、#(1 2 3)
のようなベクトルを読み取るための#(
などです。
# 'の表記は読者によって実装されています。
あなたが効果を確認したい場合は、たとえば、これを使用することができます。
CL-USER 1 > (read-from-string "#'+")
(FUNCTION +)
3
CL-USER 2 > '#'+
(FUNCTION +)
ありがとうございました!!! (私の側で愚かな間違い) – Tanmay
#は、慣例により、デフォルトのリーダーマクロ文字です。 1つは、異なる開始文字で同じことを簡単に行うことができます。 – Sylwester