语言 ML 函数 val a’ * a’ * int -> bool
language ML function val a’ * a’ * int -> bool
使用 ML 语言
假设f(x,y,z)
是一个函数。给出一个 f 的定义示例,它会导致 f 的参数具有以下类型:a’ * a’ * int
.
示例代码
fun f1 (x,y,z) = z<5 ;
val f1 = fn : 'a * 'b * int -> bool
如何将此值更改为 a’ * a’ * int -> bool
??
类型:
a’ * a’ * int -> bool
表示该函数接受三个参数,第一个是 'a 类型,第二个也是 'a 类型,第三个是 int 类型。
您的定义:
fun f1 (x,y,z) = z<5 ;
是正确的方法,因为它需要一个元组,现在为了限制 x,y 的类型相等,您可以这样写:
fun f1 (x :'a ,y :'a ,z) = z<5 ;
如果您想避免显式类型注释,使 x
和 y
成为同一类型的最简单方法是 return 它们都来自函数,但在不同的情况下.
真实示例:
- fun f (x,y,z) = if z < 0 then x else y;
val f = fn : 'a * 'a * int -> 'a
(由于问题描述中未提及 bool
结果类型,我假设这只是您 returning z < 5
的结果,而不是原始问题。)
使用 ML 语言
假设f(x,y,z)
是一个函数。给出一个 f 的定义示例,它会导致 f 的参数具有以下类型:a’ * a’ * int
.
示例代码
fun f1 (x,y,z) = z<5 ;
val f1 = fn : 'a * 'b * int -> bool
如何将此值更改为 a’ * a’ * int -> bool
??
类型:
a’ * a’ * int -> bool
表示该函数接受三个参数,第一个是 'a 类型,第二个也是 'a 类型,第三个是 int 类型。
您的定义:
fun f1 (x,y,z) = z<5 ;
是正确的方法,因为它需要一个元组,现在为了限制 x,y 的类型相等,您可以这样写:
fun f1 (x :'a ,y :'a ,z) = z<5 ;
如果您想避免显式类型注释,使 x
和 y
成为同一类型的最简单方法是 return 它们都来自函数,但在不同的情况下.
真实示例:
- fun f (x,y,z) = if z < 0 then x else y;
val f = fn : 'a * 'a * int -> 'a
(由于问题描述中未提及 bool
结果类型,我假设这只是您 returning z < 5
的结果,而不是原始问题。)