- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
curry
add::Int->Int->Int
add x y = x+y
不加修饰
add1::(Int,Int)->Int
add1 (x,y)=x+y
我在重新分级 Curried 和 Uncurried 函数时遇到了几个问题,考虑上面的函数,
在 Uncurried 函数中输入参数为 (Int,Int)
,那么它等于输入一个 tuple 吗?我们如何区分它?
未柯里化(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/
我正在做一些练习,我必须添加一个函数的类型并解释它的作用。我坚持这个: phy = uncurry ($) 根据 GHCi,类型是 phy :: (a -> b, a) -> b .我的haskell
uncurry f=\(a,b)->f a b uncurry 将柯里化(Currying)函数转换为对函数,但上面的函数只是将其转换为柯里化(Currying)函数 f a b。这不是与 uncur
我一直在玩uncurry在 GHCi 中运行,我发现了一些我根本无法得到的东西。当我申请 uncurry到(+)函数并将其绑定(bind)到下面代码中的某个变量,编译器推断其类型特定于 Integer
我有这行代码: map (\(u,v) -> flatTorus n u v) gridUV Hlint 建议我将其替换为 map (uncurry (flatTorus n)) gridUV 这个建
当我输入以下内容时,我无法理解编译器的作用: (curry . uncurry) (+) 1 2 在我理解之后,编译器首先使用 uncurry,这意味着会发生错误,因为 uncurry 函数需要这样的
是否可以在创建时不指定实例来创建实例方法的委托(delegate)?换句话说,您能否创建一个“静态”委托(delegate),将调用该方法的实例作为第一个参数? 例如,如何使用反射构造以下委托(del
是否可以在创建时不指定实例来创建实例方法的委托(delegate)?换句话说,您能否创建一个“静态”委托(delegate),将调用该方法的实例作为第一个参数? 例如,如何使用反射构造以下委托(del
假设我们有一个类型构造函数 f,它通过 DataKinds-promoted 对接受两种类型。 forall (f :: (ka, kb) -> *) 然后我可以实现一个函数 forward ,就像
我有一个类型级别的数字 data Z deriving Typeable data S n deriving Typeable 和 n 元函数(来自固定向量包的代码) -- | Type fami
在我正在编写的库中,我发现编写一个与以下类似(但比其更通用)的类似乎很优雅,它结合了通常的 uncurry超过产品和fanin函数(来自 here 或 here 如果您愿意): {-# LANGUAG
curry add::Int->Int->Int add x y = x+y 不加修饰 add1::(Int,Int)->Int add1 (x,y)=x+y 我在重新分级 Curried 和 Unc
fun curry f x y = f (x, y); fun uncurry f (x, y) = f x y; fun compose (f, g) x = f (g x); 我了解 compos
我一直想知道如何无点实现不同的标准 Haskell 函数。目前,我对 uncurry 感兴趣我觉得这个很重要。 主要问题是我们无法(或在我看来)对论点进行分组。如果我们有 uncurry (事实上
在下面的示例中,当存在默认参数时,我无法让 Ramda.js uncurry 函数与 ES6 箭头函数一起工作: const tt = (x) => y => x + y; const tt1 = (
如果我有一个功能: f : A => B => C 我可以定义一个隐式转换,这样就可以在函数 (A, B) => C 的地方使用它。是期待。这也朝着另一个方向发展。 为什么这些转换不是隐式的(或隐式可
我如何使用 curry和 uncurry Haskell 中的前奏函数? 此外,为什么以下定义在加载时会抛出错误? curry' :: ((a -> b) -> c) -> a -> b -> c c
我是一名优秀的程序员,十分优秀!