このタイプのステートメントをサポートするために必要なLispの型システムのLispの型システムのトラブル
思考
私はLispのに非常に新しいですので、私も疑問にアプローチする方法についてはわからないと思います。 私はタイプシステムは基本的にそれがどのように動作し、何をすることができる言語のルールであると理解しています。私はこの1行のコードでLispの機能をどのように記述するのか分かりません。
このタイプのステートメントをサポートするために必要なLispの型システムのLispの型システムのトラブル
思考
私はLispのに非常に新しいですので、私も疑問にアプローチする方法についてはわからないと思います。 私はタイプシステムは基本的にそれがどのように動作し、何をすることができる言語のルールであると理解しています。私はこの1行のコードでLispの機能をどのように記述するのか分かりません。
これは宿題に関する質問ですので、私はあなたに答えません。代わりに、私はあなたに正しい質問をするのを手伝っています。
あなたがまだわかっていない、または理解していない質問にコンセプトがある場合は、が最初にであることを理解してください。
タイプシステムは基本的にどのように動作し、何ができるのかの言語のルールです。
はバックステップを取ると、この文は「型システム」のご理解について語っている程度何と思います。 タイプシステムとは何ですか?私はそうは思わない。 タイプシステムの目的を理解していますか?私はそうは思わない。
まず、これらの質問にお答えください。
42
はタイプInteger
を持っている、といくつかの機能foo
はタイプInteger
の単一のパラメータを取り、String
を返した場合、表現(関数を呼び出す)の種類は何ですか?"OMG"
はタイプString
を持っている、といくつかの機能foo
はString
のタイプInteger
の単一のパラメータを取り、返した場合、表現(foo "OMG")
の種類は何ですか?Lispだけでなく、Java、C、C++、Haskellのような他の言語の最後の2つの質問に答えてみてください。
さて、(ここではCommon Lispのeval
に保つ)の種類を考えてみてください:
(eval '(+ 1 2))
そして最後に、タイプのものです:あなたが話しているかimplimentation
(eval (read))
これ以上の研究から、Lispは強く型付けされ、動的で正しいですか?これは、実行時に変数が解釈されるため、また、実行している処理に応じて文字列と数値を変換する必要があるためです。 ** read-from-string **と** evalを使用しているため、**(eval(read-from-string(read-line))))**を見ると強く型付けされていると言えるでしょう。 **は実行時に変数が解釈されることを示しています。これは正しいようですか? – Justin
は、 ? – coredump
@coredump私は特定の実装について語られているとは思わない。 – Justin
私は、ほとんど情報に基づいてタイプシステムについて何も言えないと思います。例えば。 Haskellは静的な型定義を持っていて、型定義も推測できるので、同様のコードは同じように見えます。 – Sylwester