私はhtdpを調べていて、これを最初のどこかで見つけました:-
次の文が違法な定義である理由を説明してください:1。(define(f'x)x)
ただし、ラケットでは正常に機能します。
> (define (f 'x) x)
> (f 'a)
3
> (define a 5)
> (f a)
3
明らかに、私は何かが欠けています...正確には何ですか?
簡単な答え: 完全な "#lang racket" 言語を使用するべきではありません。教育言語は、遭遇している言語の潜在的に混乱を招く高度な機能を取り除きます。
この場合、定義は、デフォルト値が 'x' によって提供される quote と呼ばれるオプションの引数を持つ f と呼ばれる関数として解釈されます。
語学レベルを初級者に設定すると、より合理的な答えが得られます。
Racket:では、この行は機能しません(define (f 'x) x)
。報告されたエラーは ですdefine: not an identifier for procedure argument in: (quote x)
。
どの言語を使用していますか? インタラクション ウィンドウで上記の行を実行しようとしましたか?