2014-01-09 58 views
0

我正在學習從操作語義和類型系統進行測試,並且我遇到了一個我不確定如何處理的任務。給定函數的最一般類型

任務如下:確定函數的最一般類型ff(a,b,c,d) = g(c,d), where g = a(b)


我估計函數F(A,B,C,d)返回的函數克(C,d)的輸出。因此,假設c,d是基本類型的一些變量,並且a是具有一個基本類型的一個參數b的函數。但我不知道是什麼g = a(b)不使用參數時,是指當有此功能在g(c,d)形式的呼叫......或者什麼,我剛纔說的是正確的: -/

我不知道該怎麼做這裏。你能否給我一個提示或者重定向我一些關於這個主題的文章(理想情況下用這個例子)。到目前爲止我發現的唯一的東西是關於類型系統和語義的一般文本。非常感謝!

+1

a是一個參數的函數 - 返回兩個參數的函數(稱爲g) – user3125280

+0

@ user3125280你應該讓它成爲一個答案..這是一個答案,是一個很好的答案。 –

回答

3

你必須問自己「什麼樣的功能是?」我們知道a(b)的結果是a(b)功能。所以「a」是一個返回函數的函數。具體來說,它是一個函數,它返回一個帶有兩個參數c和d的函數。

如果上述情況令人困惑(我不確定您對函數式編程有多熟悉等),這可能有助於考慮一個具體的例子。想象一下你有兩個功能,foo和bar。 foo將兩個數字(c和d)相乘,並添加兩個數字。

a可能是一個函數,它可以選擇我們是否想使用foo或bar。 (a,「bar」,1,2)將是(a(「bar」))(1,2)= 1 + 2 = 3. 和f(a,「foo」,1 ,2)將是(a(「foo」))(1,2)= 1 * 2 = 2.

+0

謝謝..這實際上是有道理的,並幫助很多! – Smajl