语言ML函数val a'* a'* int - >布尔

时间:2017-10-14 13:41:10

标签: function types sml ml

用ML语言

假设a’ * a’ * int是一个函数。举一个f的定义的例子,它会使f的参数具有类型:fun f1 (x,y,z) = z<5 ; val f1 = fn : 'a * 'b * int -> bool

示例代码

a’ * a’ * int -> bool

我如何将此val更改为private readonly UserManager<ApplicationUser> _userManager; private readonly SignInManager<ApplicationUser> _signInManager; private readonly IEmailSender _emailSender; public AccountController(UserManager<ApplicationUser> userManager, SignInManager<ApplicationUser> signInManager, IEmailSender emailSender) { _userManager = userManager; _signInManager = signInManager; _emailSender = emailSender; } ??

2 个答案:

答案 0 :(得分:1)

类型:

a’ * a’ * int -> bool 

表示该函数有三个参数,第一个是'a type,第二个也是'a type,第三个是int类型。

您的定义:

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

是正确的,因为它需要一个元组,现在为了限制x,y的类型你可以写的相等:

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

答案 1 :(得分:1)

如果要避免显式类型注释,使xy成为相同类型的最简单方法是从函数中返回它们,但在不同情况下。
现实世界的例子:

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

(由于问题描述中未提及bool结果类型,我假设它只是您返回z < 5的结果,而不是最初的问题。)