Sud*_*ha 2 haskell functional-programming
咖喱
add::Int->Int->Int
add x y = x+y
Run Code Online (Sandbox Code Playgroud)
Uncurried
add1::(Int,Int)->Int
add1 (x,y)=x+y
Run Code Online (Sandbox Code Playgroud)
我有几个问题重新调整Curried和Uncurried函数,考虑上面的函数,
在Uncurried函数输入参数是as (Int,Int),它是否与输入元组一致?我们怎么能区分那个?
关于无故障和咖喱功能有哪些优缺点?什么时候和为什么要使用?
在Uncurried函数中,输入参数为(Int,Int),因此它是否与输入元组相等?我们怎么能区分那个?
它不仅是等价的,而且是一个元组.这add1是一个函数,它接受一对(2元组)的Ints并返回一个Int.
什么是关于未经证实和干扰的功能的利弊?,以及在哪里使用它们?
根据经验,我会说:如果你没有充分的理由不使用咖喱功能.它们有一个很好的功能,你可以部分应用它们,例如你可以写f = add 1,f现在有类型,f :: Int -> Int并始终添加1参数.
这有很多应用程序,在Haskell中很常见,因为它非常方便.例如,向列表中的所有元素添加1的函数就是这样map (add 1).
另外,语法噪音要小得多.