问题标签 [pointfree]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - Haskell 毫无意义的性能 - 有效地将多个函数映射到相同的数据
我经常需要将多个函数映射到相同的数据。我已经实现了 dpMap 来为我做这件事
dpMap 是一个功能,这是否意味着我只读取数据 dt 一次(就像一个只有相同输入的电路。一个毫无意义的系统提醒一个电路;只是管道没有数据)?
例如,考虑计算列表 dt 的最小值和最大值。
(我可以摆脱 dt 但必须使用 -XNoMonomorphismRestriction)
与以这样的全点形式实现相同的功能相比,是否有性能优势?:
编辑: dpMap 是否有一个通用的实现,它适用于常量内存?
我发现了另一篇不错的博文:http ://www.haskellforall.com/2013/08/composable-streaming-folds.html ;希望对您有所帮助。
EDIT2:在获得更多上下文之后,这是一个解决方案,即使我没有 dpMap 的确切实现,该模式也很简单,不需要单独的函数:
用法:
如果您还想计算总和和长度
用法:
haskell - 在haskell中具有多值函数的函数组合?
我想知道是否可以使用带有多个参数的函数进行函数组合。我希望能够做这样的事情
将 x 设置为将两个数字的乘积相加的函数。
functional-programming - 如何将函数转换为无点形式?
假设我有一个 JavaScript 函数
我如何将其转换为无点函数?通过组合函数?还有关于这方面的更多信息的资源吗?
haskell - 组合函数组合:(.).(.) 是如何工作的?
(.)
接受两个接受一个值并返回一个值的函数:
由于(.)
需要两个参数,我觉得(.).(.)
应该是无效的,但它很好:
这里发生了什么?我意识到这个问题的措辞很糟糕......由于currying,所有函数实际上只需要一个参数。也许更好的说法是类型不匹配。
haskell - 谁能解释 ((.)$(.)) (==) 1 (1+) 0 的含义
在haskell.org 上,我遇到了这个自由风格的功能,被称为“猫头鹰”。
它的类型签名是
(a -> b -> c) -> a -> (a1 -> b) -> a1 -> c
.
它等效于
f a b c d = a b (c d)
并且显然是
((.)$(.)) (==) 1 (1+) 0
return True
。
所以我的问题是:
a1
类型签名中的 是什么意思?有关系a
吗?- 是
(==)
某种函数相等运算符吗?因为0 (==) 0
在 GHCi 中引发错误。 1 (1+) 0
在这种情况下是什么意思?我看不出这甚至是一个有效的表达方式。- 为什么表达式返回
True
?
f# - 无点函数不会导致递归,但正常函数会在这里吗?
作为这里的一个附带问题,在 F# 中执行诸如委托多播之类的最简单方法是什么,我认为提出一个带有适当标题的完整问题可能会更好。
这个版本不会导致递归:(这里notify
似乎是不可变的d
)
这个版本会。(这里notify
似乎是可变的d
)
另一个失败版本:
我在哪里可以找到任何指南或更多资源来解释我们为什么会有这种行为差异。它是与特定的编译器/语言相关联,还是有适用于所有函数式语言的理论?
haskell - 处理 GHC 中较高级别类型的特殊情况?
考虑 GHCi 会话中的这个示例:
这定义了一个bar
rank-2 类型的函数。因此,类型推断不应该能够推断出正确的类型:
确实,
令人惊讶的是,如果我们以无点风格编写相同的内容,它会起作用:
类型推断如何在这里推断出更高等级的类型?任何人都可以确认这在 GHC 中得到了特殊处理,或者指出我错在哪里。
haskell - Haskell 中是否有一个组合器可以将多个函数应用于单个值?
例如,假设我有以下功能:
而且我只想返回qux
例如g :: Monad f => f a -> f d
whereg
调用的结果bar
以及baz
它们的副作用。
有没有一种方法可以在g
不将每个函数显式应用于结果的情况下进行构造foo
?有点类似于(&&&)
工作原理,或者(<*>)
我想。
f# - Understanding the F# Composition Operators
I am well-versed in using the >>
and <<
operators in F#. However, after looking in the F# source to establish a deeper understanding I became confused with this:
How do I interpret these expressions conceptually? Also, how would you describe these expressions? Are they defining a type?