2016-05-16 12 views
1

私はelispで非常に新しく、学習を始めました。私はこの文書で次の表現を見てきました。elisp式(1+(buffer-size))と(+ 1(buffer-size))はどういう意味ですか?

(1+ (buffer-size)) 
(+ 1 (buffer-size)) 

これはどういう意味ですか?私はelispの接頭辞表記法を知っているので、2番目の接頭辞表記法は正しいものでなければなりません。しかし、両方ともエラーなく実行できます。最初のものはpoint-maxのドキュメントのものです。

ありがとうございました。

+2

'1 +'は関数です。 '+'は関数です。 'buffer-size'は関数です。 「M-x記述関数RETバッファサイズRET」および「M-x記述関数RET1 + RET」および「M-x記述関数RET + RET」 – lawlist

+1

「C-hf RET1 + RET」を含む。 'C-h f RET + RET'となる。 – Drew

答えて

4

トークン1+は、シンボルを表す識別子です。このシンボルは関数として結合し、そうすることは(1+ arg)1+機能が1プラスその引数の値を返します。「)引数としてargの値で、1+関数を呼び出すことがあります。

構文(+ 1 arg)があります+関数は、2つの引数を受け取って加算します。

現在普及している多くのメインストリームプログラミング言語では、トークン化の規則は違いがないようになっています1+1 +の間:これらはいずれも数値定数の後に+トークンが続きます。 Lispのトークン化は異なります。 Lispファミリの言語は、通常、含めることができるトークンに数字と非英数字を含めることができます。私はEmacs Lispリファレンスマニュアルを見ていて、read関数が印刷された表現をオブジェクトに変換するために使用するロジックに関するセクションは見ていません。典型的には、 "Lispy"のトークン化動作は、トークン構成要素ではない文字で停止する、有効なトークン構成要素である文字を蓄積することに基づいて、どのような種類のトークンであろうと、まずトークンが走査される。たとえば、入力がabcde(fの場合、抽出されるトークンはabcdeです。 (文字は、トークンを終了します(入力ストリームに残ります)。その後、得られた文字列abcdeが再調査され、分類され、与えられたLisp方言の規則に従って、見た目に基づいてオブジェクトに変換されます。 Lispの方言では、シンボルを表すすべてのアルファベットのトークンと、整数を表すすべての数字のトークン(場合によっては先頭につけて)のトークンに広く依存することができます。 1+には末尾に+がありますが、それは違います!

関連する問題