问题标签 [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 中将多个函数应用于相同的值无点样式
有一天我很无聊,想锻炼一下大脑,所以我决定做99 个 Haskell 问题,但我限制自己以无点的方式做。当我以无点风格做事时,似乎经常出现的一个问题是:如何将多个函数应用于相同的值,同时将每个结果保持为独立实体?使用尖头符号:
到目前为止,我以无点表示法提出了什么:
我似乎无法从x
那里结束。
f# - 如何使用原语在 F# 中实现列表过滤功能
我正在阅读为什么函数式编程很重要,作者使用 foldr 和函数组合实现了几个应用程序。我在 F# 中做了其中的一些,例如 map 函数:
然后我想实现列表过滤功能,结果卡住了:
这里有什么?函数应该将列表项、累积过滤列表作为输入,如果谓词返回 false,则返回相同的列表,如果返回 true,则返回 cons:ed 列表。
我想我需要这里的选项类型,但不知道如何将它们粘合在一起。是否可以使用 pred 和 cons(可能还有其他一些原语)来组合一个函数来实现这一点,而无需编写一个自定义的 lambda 函数来完成所有的工作?这是计算表达式的情况吗?
haskell - 应用重写(Haskell)
当我不了解 Haskell 中的表达式如何工作时,我经常发现将其分解为更基本的形式会有所帮助。
使用以下定义
我改写sequenceA [(+3),(+2)] 3
为
然后把它变成(请原谅格式;我不确定分割线的约定是什么)
(\d ->(\c->(\b -> (\a -> (\_ -> (:)) a (+3) a) b (\_ -> (:)) b) c (+2) c) d (\_ -> []) d) 3
当我手动完成它时,这似乎是正确的,但我无法让 GHCi 接受它。我在这里做错了什么?我的第二个问题是如何从这种形式转换为功能组合。我试过用各种组合替换点,但 GHCi 拒绝所有这些....
function - Haskell 中的隐性函数组合
假设我有一个mean
这样定义的函数:
但我希望它以某种默认形式出现,如下所示:
是否有一种内置的 Haskell 方法可以按照这些方式做一些事情,而不必构建我自己的tacit
函数(类似这样):
在这种形式中,函数如下所示:
但感觉可能有一种方法可以避免使用诸如此类的显式函数。我是在想; 有没有内置于 Haskell 中的方法来做到这一点?
haskell - Pointfree 在 Haskell 中返回一个元组
无点函数可以返回元组吗?例如,以下是否可以用 pointfree 样式编写(其中 f1、f2 和 f3 已定义):
在这种情况下,我的 f1、f2 和 f3 是 quot、mod、* 和一些整数的组合。
是一个更一般的情况,并且等价于
命名函数是可以的,但我的例子是匿名的。(命名示例如下)
编辑:我只是好奇,我不会这样做。
haskell - 具有多个变量的无点组合
我已经开始关注它,并且更喜欢将它用于简单的情况,在这些情况下,我基本上可以将值从一个输出传递到一个输入。我喜欢的无点构图的一个简单示例是:
今天在玩 GHCI 时,我想看看我是否可以作曲not
和(==)
复制(/=)
,但我真的无法推理出来。(==)
取两个输入,not
取一个。我认为这可能有效:
假设单个Bool
输出(==)
将转到not
,但它不会编译,引用以下错误:
我希望我能说这对我来说意义重大,但我得到的只是传递给的第二个论点可能是为了(==)
搞砸事情not
?任何人都可以帮助我更好地理解这个组合背后的逻辑吗?
haskell - 无意义编程时 readFile 和 IO monad 之间没有合作
为什么 countInFile1 和 countInFile3 有编译器错误,而 countInFile0 和 countInFile2 没有。这四个都是一样的。
还有为什么 countInFile3 有这个 countInFile1 没有的附加错误:
f# - 无点函数能够内联吗?
inline
显式地柯里化函数似乎是不可能的。所以无论何时调用,即使正确mycurried
也不会得到,对吗?inlined
myfunction
inlined
那么这可以看作是柯里化函数的缺点之一吗?
haskell - 由于 (-1) 被视为负数,因此减法等于 (+1) 是什么?
可能重复:
柯里化减法
我开始了我的第一个 haskell 项目,它不是从教程开始的,当然我偶然发现了最简单的东西。
我有以下代码:
我花了一些时间来理解为什么我的代码无法编译:我使用了 (-1),这被视为负数。将减号括起来并没有帮助,因为它是它的前缀并使 1 成为它的第一个参数。
简而言之,这个免费版本是什么?
haskell - 寻找haskell高阶函数
将列表压缩到自身上的函数可以定义为:
这行得通,但我想以无点风格定义它。为此,我定义了一个函数dollarize
:
这可行,但显然我宁愿不定义自己的高阶函数。有没有办法找到 的标准等价物dollarize
,假设它存在?如果不是,那么用于组合功能的此类功能在哪里?