2016-04-30 1 views
0

このタイプのステートメントをサポートするために必要なLispの型システムのLispの型システムのトラブル

思考

私はLispのに非常に新しいですので、私も疑問にアプローチする方法についてはわからないと思います。 私はタイプシステムは基本的にそれがどのように動作し、何をすることができる言語のルールであると理解しています。私はこの1行のコードでLispの機能をどのように記述するのか分かりません。

+0

は、 ? – coredump

+0

@coredump私は特定の実装について語られているとは思わない。 – Justin

+1

私は、ほとんど情報に基づいてタイプシステムについて何も言えないと思います。例えば。 Haskellは静的な型定義を持っていて、型定義も推測できるので、同様のコードは同じように見えます。 – Sylwester

答えて

1

これは宿題に関する質問ですので、私はあなたに答えません。代わりに、私はあなたに正しい質問をするのを手伝っています。

あなたがまだわかっていない、または理解していない質問にコンセプトがある場合は、が最初にであることを理解してください。

タイプシステムは基本的にどのように動作し、何ができるのかの言語のルールです。

はバックステップを取ると、この文は「型システム」のご理解について語っている程度と思います。 タイプシステムとは何ですか?私はそうは思わない。 タイプシステムの目的を理解していますか?私はそうは思わない。

まず、これらの質問にお答えください。

  • 動的タイピングと静的タイピングの違いは何ですか?(Wikipediaへの簡単なジャンプです)あなたの理解を確認するために、これらの質問に答えてみてください。
  • 強タイピングと弱タイピングの違いは何ですか?
  • 42はタイプIntegerを持っている、といくつかの機能fooはタイプIntegerの単一のパラメータを取り、Stringを返した場合、表現​​(関数を呼び出す)の種類は何ですか?
  • "OMG"はタイプStringを持っている、といくつかの機能fooStringのタイプIntegerの単一のパラメータを取り、返した場合、表現(foo "OMG")の種類は何ですか?

Lispだけでなく、Java、C、C++、Haskellのような他の言語の最後の2つの質問に答えてみてください。

さて、(ここではCommon Lispのevalに保つ)の種類を考えてみてください:

(eval '(+ 1 2)) 

そして最後に、タイプのものです:あなたが話しているかimplimentation

(eval (read)) 
+0

これ以上の研究から、Lispは強く型付けされ、動的で正しいですか?これは、実行時に変数が解釈されるため、また、実行している処理に応じて文字列と数値を変換する必要があるためです。 ** read-from-string **と** evalを使用しているため、**(eval(read-from-string(read-line))))**を見ると強く型付けされていると言えるでしょう。 **は実行時に変数が解釈されることを示しています。これは正しいようですか? – Justin