gpt4 book ai didi

haskell - curried 和 uncurried 函数

转载 作者:行者123 更新时间:2023-12-02 05:44:57 27 4
gpt4 key购买 nike

curry

add::Int->Int->Int
add x y = x+y

不加修饰

add1::(Int,Int)->Int
add1 (x,y)=x+y

我在重新分级 CurriedUncurried 函数时遇到了几个问题,考虑上面的函数,

问题一

在 Uncurried 函数中输入参数为 (Int,Int) ,那么它等于输入一个 tuple 吗?我们如何区分它?

问题2

未柯里化(Currying)和柯里化(Currying)函数的优缺点是什么?何时以及为什么应该使用哪个?

最佳答案

in Uncurried function input parameters are as (Int,Int) , so is it equalent to a input a tuple ? how can we differentiated that ?

它不仅等价,而且一个元组。所以 add1 是一个接受一对(二元组)Int 并返回一个 Int 的函数。

Whats the pros and congs regarding uncurried and curried functions ? , and where to use them ?

根据经验,我会说:如果没有充分的理由不使用,请始终使用柯里化(Currying)函数。它们具有很好的特性,您可以部分应用它们,例如您可以编写 f = add 1,其中 f 现在具有类型 f::Int -> Int 并且始终将其参数加 1。

这有很多应用并且在 Haskell 中非常常见,因为它非常方便。例如。将列表中的所有元素加 1 的函数将只是 map (add 1)

此外,语法的噪音要小得多。

关于haskell - curried 和 uncurried 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6633500/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com