在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
?
在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
?
類型:
a’ * a’ * int -> bool
意味着函數有三個參數的第一個是「一個類型,第二也」類型和int類型的三分之一。
你的定義:
fun f1 (x,y,z) = z<5 ;
是因爲它需要一個元組,現在爲了限制x的類型的正確方法,Y等於你可以寫:
fun f1 (x :'a ,y :'a ,z) = z<5 ;
如果您想避免明確的類型註釋,使x
和y
具有相同類型的最簡單方法是從函數返回它們兩個,但在不同情況下。
真實的例子:
- fun f (x,y,z) = if z < 0 then x else y;
val f = fn : 'a * 'a * int -> 'a
(由於bool
結果類型沒有在問題描述中提到的,我假設它只是你回來z < 5
,而不是最初的問題的一部分的結果。)
您是否將所有的作業問題發佈在StackOverflow上? –