问题标签 [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 投票
2 回答
234 浏览

f# - 无点函数中的异常处理

我遇到了一个看似微不足道的问题:如果函数中的异常是以无点方式编写的,我将无法处理它。

考虑这两个函数:

虽然这两个功能看起来相同,但它们有不同的类型:

显然,divide2甚至没有尝试处理异常。它只是返回一个运算符。

我该怎么做才能以divide2适当的方式处理异常(除非专门声明其参数)?

0 投票
3 回答
458 浏览

haskell - Pointfree(或库)函数,用于将两个函数应用于单个输入

我一直在重用 lambda 表达式,例如

我将相同的输入应用于两个函数并将结果封装成一对。我可以写一个函数来捕捉这个

现在上面的 lambda 表达式只是combine f g. 我有两个问题。

  1. 我很想知道是否有一个标准库函数可以做到这一点,而我只是找不到。
  2. 出于好奇,我想以无点风格重写此功能,但我遇到了很多麻烦。
0 投票
2 回答
417 浏览

performance - Pointfree 版本使性能恶化

好吧,事实证明我在我的程序代码中定义了这个函数:

它做它看起来做的事情。它使用 type 的内部运算符压缩(多次应用运算符,是的)两个 type 元素Stream a,这是一个类似列表的类型a。定义非常简单。

一旦我以这种方式定义了函数,我就尝试了另一个版本:

据我所知,这与上面的定义完全相同。它只是先前定义的无点版本。

但是,我想检查是否有任何性能变化,我发现,确实,无点版本使程序运行得稍差(无论是在内存上还是在时间上)。

为什么会这样?如果有必要,我可以编写一个重现此行为的测试程序。

如果这有所作为,我正在编译-O2

简单的测试用例

我编写了以下代码,试图重现上述行为。这次我使用了列表,性能的变化不太明显,但仍然存在。这是代码:

使用opEvery(显式参数版本)的分析结果:

分析结果使用opEvery'(无点版本):

但是,我希望这两个版本是等效的(在所有意义上)。

0 投票
2 回答
693 浏览

haskell - Haskell:为什么 ((.).(.)) fg 等于 f 。gx?

你能解释一下表达式 ((.).(.)) 的含义吗?据我所知 (.) 的类型为 (b -> c) -> (a -> b) -> a -> c。

0 投票
4 回答
578 浏览

haskell - 在 Haskell 中,当你只传递一个列表时,map 函数意味着什么?

在我要调试的 Haskell 项目中,代码中有一些实例map仅与一个参数一起使用 - 一个列表 - 被传递。

例如

在这种情况下是什么map意思/做什么?

0 投票
5 回答
2401 浏览

haskell - 我如何理解“(.) . (.)”?

我相信我对fmap . fmapFunctor 有所了解,但在功能上,这几个月来一直让我头疼。

我已经看到您可以只应用(.)to的定义(.) . (.),但我忘记了如何做到这一点。
当我自己尝试时,结果总是错误的:

如果“仅应用定义”是这样做的唯一方法,那么有人是怎么想出的(.) . (.)
我必须缺少一些更深层次的理解或直觉。

0 投票
3 回答
339 浏览

haskell - 请解释一下 (forM_ [stdout, stderr] .flip hPutStrLn) :: String -> IO ()

我无法理解这个 Haskell 表达式的工作原理:

. flip hPutStrLn部分到底在做什么?类型签名看起来很复杂:

(.)计算表达式时,运算符的左操作数和右操作数是什么?

提出我的问题的另一种方法是,顶部的表达式的左侧部分如何以这样的类型签名结束:

0 投票
0 回答
123 浏览

haskell - Haskell 中的无点函数

如何定义这个无点?

按预期工作。最合乎逻辑的似乎只是放弃m这样的:

可以在 ghci 中定义,但是用它来调用它argmax [1,3,4,5,6,1]给了我

我认为这与类型有关:

对于点版本:

对于无积分版本:

这是 ghci 诡异还是我做错了什么?

0 投票
3 回答
576 浏览

syntax - 无点:对括号放在哪里感到困惑

这是错误的,但我如何让它理解仍然需要提供论点?参数应该是类型char list,即需要应用到它的第一个函数是(List.map (String.make 1)),然后将它传递给String.concat ""。我想我已经尝试了所有我能想到的括号组合......到目前为止没有任何乐趣。

帮助?

我还想我可以这样做:

但只是想确保没有更好的方法。

0 投票
2 回答
484 浏览

haskell - 将递归函数重写为管道函数组合

我正在写作业(CIS194 Haskell 课程)。

我必须将以下递归函数重写为管道函数(没有明显的递归)。

我的第一次尝试是在这里:

这是一个正常的解决方案还是很奇怪?

我怎样才能fun2更好地重写?

takeWhile现在我尝试使用和编写版本iterate

我的第二次尝试:

until现在版本有点问题。