2017-10-14 84 views
1

在ML語言語言ML作用VAL一個」 *一個」 * INT - > BOOL

假設f(x,y,z)是一個函數。給出一個f的定義的例子,它會導致f的參數具有類型:a’ * a’ * int

示例代碼

fun f1 (x,y,z) = z<5 ; 

val f1 = fn : 'a * 'b * int -> bool 

我如何改變這種VAL到a’ * a’ * int -> bool

+2

您是否將所有的作業問題發佈在StackOverflow上? –

回答

1

類型:

a’ * a’ * int -> bool 

意味着函數有三個參數的第一個是「一個類型,第二也」類型和int類型的三分之一。

你的定義:

fun f1 (x,y,z) = z<5 ; 

是因爲它需要一個元組,現在爲了限制x的類型的正確方法,Y等於你可以寫:

fun f1 (x :'a ,y :'a ,z) = z<5 ; 
1

如果您想避免明確的類型註釋,使xy具有相同類型的最簡單方法是從函數返回它們兩個,但在不同情況下。
真實的例子:

- fun f (x,y,z) = if z < 0 then x else y; 
val f = fn : 'a * 'a * int -> 'a 

(由於bool結果類型沒有在問題描述中提到的,我假設它只是你回來z < 5,而不是最初的問題的一部分的結果。)

相關問題