Sup*_*ell 3 f# functional-programming
我想改写这个
//finds the max of 3 numbers
let max3 (n1, n2, n3) = let mx1 = if (n1 > n2) then n1 else n2 in if (mx1 > n3) then mx1 else n3;
Run Code Online (Sandbox Code Playgroud)
不使用"in"
我想出了这个
let max3 (n1, n2, n3) =
let mx1 =
if (n1 > n2)
then n1
else n2
let mx2=
if (mx1 > n3)
then mx1
else n3;;
Run Code Online (Sandbox Code Playgroud)
说,未完成,并期待一个表达.
不知道为什么.mx2是为了获得更高的集合值并将其移动到其范围内的下一个函数.
我也希望能够这样做,以便我不使用任何let表达式.请理解这种语言的任何帮助都非常友好
编辑:任何人都可以回答我的问题吗?在F#中使用任何let表达式也可能出现这样的问题吗?
let max3 (n1, n2, n3) = max n1 (max n2 n3)
// val max3 : n1:'a * n2:'a * n3:'a -> 'a when 'a : comparison
max3 (13,4,7)
Run Code Online (Sandbox Code Playgroud)
最大值是为2个参数预定义的,可以如上所述组成.如果您声明没有类型,那么它将是通用的约束类型'a需要具有比较函数.
在F#中,函数参数通常不是像(n1,n2,n3)那样的元组,而是可以定义为
let max3 n1 n2 n3 = max n1 (max n2 n3)
// val max3 : n1:'a -> n2:'a -> n3:'a -> 'a when 'a : comparison
max3 13 4 7
Run Code Online (Sandbox Code Playgroud)