2017-10-14 86 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,而不是最初的问题的一部分的结果。)

相关问题