2012-02-01 41 views
0

我的書說: 如果有一種叫做L的語言和一種叫做L'的語言,用L'寫的解釋器是實現部分函數I(L)的程序:(prog(L )×D)→P(L)(D); 隨着D =數據或輸入,程序中編寫的程序(L)程序L,I(L)解釋器寫成L'解釋語言L',P(L)解釋結果。 我不明白爲什麼所訪問的PROG(L)的xD,爲什麼不只是PROG(L),如果我用Python編寫的,例如一個簡單的指令:解釋器的正式定義

s=input('enter a value: ') 

此情況下,我明白爲什麼域是PROG(L),XD,但如果我有什麼剛:

s='hello' 

這種情況沒有任何輸入,可爲什麼所訪問的PROG(L)的xD有人向我解釋?

+0

在我看來,'Prog(L)xD'代表一般情況。 「hello」示例是一個特例 ,其中'D'爲空。在實際意義上,沒有很多有趣的程序,其中 'D'爲空。 – NealB 2012-02-01 17:35:29

+0

那麼在第一種情況下,輸入是由程序的用戶給出的,而在第二種情況下,輸入是空字符串? – 2012-02-01 17:47:06

回答

0

@NealB在評論中部分解決了這個問題,但即使實際上沒有數據,域仍然很平凡,只是沒有數據。

事實上,沒有任何投入是其領域的一部分。這樣想:總會有一組有效的輸入。對於沒有數據的東西,這不會改變 - 它的有效數據是空集。你只是指定你不會接受輸入。例如,如果您有功能f() = 100,並試圖將其稱爲f(23),那麼顯然您做了一些無效操作。