问题标签 [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.

0 投票
4 回答
428 浏览

haskell - 函数在参数后编写函数

我不喜欢在haskell中从右到左阅读函数的顺序。为了解决这个问题,我添加了一个有用的运算符。

我想我可以在这里找到一个类似的内置运算符。像绑定运算符 (>>=)。但是绑定运算符的工作方式不同,或者确切地说我不明白它是如何工作的。它似乎使用 concat 映射。但为什么?

我要改进该操作员的下一点是让他调用一次。例如:

我尝试使用(>>>) a = aand来实现(>>>) a fun = (>>>) (fun a),但似乎这种重载是不可能的。澄清一下,我专注于函数的学习,但对 monads、types 和 classes 仍然一无所知。

所以我的问题是:内置运算符或正确使用绑定运算符。

0 投票
3 回答
5221 浏览

ruby - 如何将 Ruby 方法变成一个块?

有没有办法简化下面的代码?

filenames 是文件名(字符串)的列表,例如 ["foo.txt", "bar.c", "baz.yaml"]

有什么办法可以将“File.size”变成 proc 或 block?对于现有对象的方法,我可以做&:method. 模块级方法有类似的东西吗?

0 投票
3 回答
318 浏览

haskell - 表达式 str ab = ((.).(.)) (0 -) (+) 1 2

您能否向我解释以下表达式的工作原理:

我已经检查过了,GHCi 说是这样,-3但我不明白为什么。

我还检查了以下内容:

但这对我没有帮助。

任何想法?

0 投票
2 回答
2084 浏览

javascript - 这是javascript中功能镜头的一个地方吗?

玩弄无点风格的javascript 以获得乐趣。

假设我正在编写视频游戏暗黑破坏神,并且我正在使用复杂的嵌套类型对敌人建模,但更深更复杂:

所以我有一个我所有敌人的清单。我想对一定范围内的所有敌人造成伤害

这当然不会进行类型检查——我的组合器采用原语,所以我需要映射和过滤“下一个级别”。我不想掩盖过滤器/映射业务逻辑管道。我知道镜头可以帮助我,但可以说我在浏览器中,因为这对于可变结构来说当然是微不足道的。我该怎么做?

0 投票
4 回答
995 浏览

clojure - Clojure 中 partial 的简洁语法

前段时间学习 Haskell,我爱上了 pointfree 表示法和特别方便的偏函数应用程序 - 只需提供你知道的 args。在 Clojure 中,我一直partial都有。我认为为部分阅读器提供特殊的语法会很高兴。

看示例代码:

这太好了!有这样的事情吗?是否有可能定义自定义阅读器宏?

0 投票
1 回答
559 浏览

haskell - 简化异或字符串

我已经将以下函数写入xor两个字符串,但觉得应该可以更简单地编写:

似乎您至少应该不能拥有第一个map,但我无法使用该组合chr . xor进行压缩。

是否存在一些有用的身份/公式涉及zipWithmap

我是Haskell的新手,所以如果有一个没有太多无点魔法的简化,很高兴看到:)

0 投票
2 回答
560 浏览

haskell - Haskell currying 在最后删除参数变量

我是一个尝试学习haskell的新手,我试图在其他论坛中搜索类似的东西,但找不到类似的问题。

运行良好

但是当我最后删除 x 时,它会出错

错误说:

无法弄清楚我在这里缺少什么。

免责声明:这不是作业问题

0 投票
1 回答
404 浏览

haskell - 涉及函数组合的常见模式 (\ab -> f (ga) (gb))

f 和 g 的组成看起来像

是我在代码中经常发现的一种模式。它类似于一元函数组合,只是f二进制,我想g在两个参数传递给f.

当我要求 lambdabot 将其转换为无点形式时,我得到了奇怪的咒语

我宁愿在我的代码中没有它,所以我最终只是明确地写出模式。

是否有一种普遍接受的方式来为这种情况编写组合器?还是我很奇怪地发现自己经常处于这种情况?

我现在没有一个实际的例子来说明我什么时候使用它,因为我从来没有想过在我需要它的时候在这里问,但是可以想象用它非常巧妙地编写欧几里得距离公式,就像这样:

0 投票
3 回答
697 浏览

f# - 这可以用无点风格表达吗?

给定以下表达式来对数字的 IEnumerable 求和:

是否有可能消除争论——像这样?

我从 F# 编译器 (FS0030) 中得到一个错误,我似乎记得曾经看过一些关于“eta 转换”的内容,但不幸的是,我对 lambda calc 的了解太有限,无法理解 eta 转换是如何涉及的。

可以像版本 b 中那样消除论点吗?

有人可以向我指出可以解释 eta 转换以及它将如何在这段特定代码中发挥作用的文献吗?

FS0030:

标准输入(1,5):错误 FS0030:值限制。值 'sum' 已被推断为具有泛型类型 val sum : ('_a -> int) when '_a :> seq 将参数明确地传递给 'sum' 或者,如果您不打算将其设为泛型,添加类型注释。

0 投票
2 回答
850 浏览

haskell - `ap zip tail` 表达式是如何工作的

我想知道如何f x = zip x (tail x)免费写。所以我使用了 pointfree 程序,结果是f = ap zip tail. ap作为 Control.Monad 的一个函数

我不明白无点定义是如何工作的。我希望我能从类型的角度来理解它。

通过查看表达式ap zip tail,我认为 zip 是 的第一个参数,ap而 tail 是 的第二个参数ap

但这是不可能的,因为 和 的类型zip与函数所需tail的完全不同。ap即使考虑到列表是一种单子。