私はScheme/Racketの新入生ですので、露骨な構文エラーは許してください。
今日のクラスでは、スキームリスト'(a, b, c)
が無効である必要があることがわかりましたが、実行すると、次のように返されました。
>'(a . b . c)
(b a c)
これは意味がありません。Afaik、インタプリタは車'aとcdr'bでconsセルを作成する必要があり、'cは無効である必要があります。とはいえ、通訳はここで本当に奇妙なことをしています。これは、#langスキーム、#langラケットなどで機能します。インタプリタとしてDrRacketを使用しています。
興味深いことに、
>'(a . b . c . d)
例外をスローして死にます。
私は非常に興味があり、言語に慣れていないので、これを理解できるようになりたいと思っています。グーグルは非常に役に立たなかった(おそらく検索用語があいまいなため)ありがとう!
編集:それは'(a . b . c)
、bを中置演算子として解釈されるためである可能性があります。例:>(4 . + . 6)
10を返します。おそらくインタプリタは演算子のようにbを使用していますか?つまり、中置的に(b a c)
。(+ 4 6)
実験によると:
>(define b +)
>(define a 4)
>(define c 6)
>(a . b . c)
10
ですから、これで問題は解決したと思いますが、「。」の使い方はまだよくわかりません。この場合の演算子。私たちはこれを解決したと思いますが、これ以上の洞察をいただければ幸いです。