语言ML作用VAL一个” *一个” * 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
,而不是最初的问题的一部分的结果。)
您是否将所有的作业问题发布在*上? –