2012-02-01 8 views
0

私の本はこう書いています: Lと呼ばれる言語とL 'という言語がある場合、L'で書かれたインタプリタは部分関数I(L)を実現するプログラムです:(prog )x D)→P(L)(D)である。 D = data、または入力、L 'で書かれたProg(L)プログラム、解釈の言語L'、P(L)の結果を解釈するL 'で書かれたI(L)インタプリタ。この場合正式な通訳の定義

s=input('enter a value: ') 

私は理由を理解:ドメインはプログレ(L)のxDである理由 が、私は理解していない、なぜ私のようなPythonで書かれたシンプルな命令を持っている場合は、ちょうどプログレ(L)ではありませんドメインはプログレ(L)のxDですが、私はちょうど何を持っている場合:

s='hello' 

この場合、ドメインはプログレ(L)XDは、なぜ誰かが私に説明することができ、任意の入力がありませんか?

+0

「Prog(L)xD」は一般的なケースを表しています。 "hello"の例は特定のケース で、 'D'は空です。実用的な意味では、 の 'D'が空であるという興味深いプログラムはあまりありません。 – NealB

+0

最初のケースでは、入力はプログラムのユーザによって与えられ、2番目のケースでは入力は空の文字列ですか? –

答えて

0

@NealBは部分的にこのコメントに対処していますが、実際にはデータはありませんが、ドメインは依然として普通ですProg(L)xD、それはただデータがないことだけです。

実際、入力がないという事実はそのドメインの一部です。このように考えてみましょう。常に有効な入力があります。これは、データを取らないものについては変化しません。有効なデータは空のセットです。あなたは入力をしないことを指定しています。たとえば、関数f() = 100を持っていて、f(23)のように呼び出そうとした場合は、何か無効な処理を行ったことが明らかです。