10得票4回答
Clojure中部分的简明语法

学习 Haskell 一段时间后,我爱上了 pointfree 符号以及特别方便的部分函数应用 - 只需提供你知道的参数。在 Clojure 中,我一直使用 partial。我认为在读取器中为部分函数应用定义一个特殊语法会很好。 看一下样例代码:; Notation with points:...

10得票3回答
bind源于哪里?

使用lambdabot的pl插件,let iterate f x = x : iterate f (f x) in iterate 被转换为fix ((ap (:) .) . ((.) =<<)) 这里的(=<<)是什么意思?我以为它只能用于单子。

10得票3回答
任何函数都可以转化为无点形式吗?

许多函数可以简化为无参数形式,但是否所有函数都可以这样做呢? 例如,我不知道如何对以下函数进行简化:apply2 f x = f x x

10得票1回答
将表达式转换为pointfree风格(Haskell)

我写了这段代码,现在需要将其重写为pointfree风格:num_of_occ ele list = length(filter(==ele)list) 于是我做了这个:num_of_occ ele = length . filter((==)ele) 它有效。然后我做了这个:num_of_...

9得票6回答
Python中的无点函数组合

我有一些谓词,例如: is_divisible_by_13 = lambda i: i % 13 == 0 is_palindrome = lambda x: str(x) == str(x)[::-1] 并且想要像下面这样逻辑地将它们组合起来: filter(lambda x: is...

9得票3回答
在Haskell中对三个参数进行柯里化

我遇到了在 Haskell 中柯里化函数以删除三个参数的问题。 免责声明:这不是课程作业,我今天被问到这个问题,对方遇到了困难,一直让我很纠结。 我们收到的自定义类型/函数是(只记得类型) type MyThing = (Char, String) type MyThings =...

9得票2回答
Haskell - 这个平均数函数是如何工作的?

我发现了这个求平均函数的实现: avg :: [Int] -> Int avg = div . sum <*> length 这是怎么工作的?我查看了由 div . sum 生成的函数: (div . sum) :: (Integral a, Foldable t) ...

9得票1回答
一个常见的涉及函数组合的模式 (\a b -> f (g a) (g b))。

组合函数f和g的形式如下 f :. g = \a b -> f (g a) (g b) 这是我在代码中经常发现的一种模式。它类似于一元函数组合,只不过f是二元函数,我希望在将参数传递给f之前对两个参数都应用g。 当我要求lambdabot将其转换为点-自由形式时,我得到了奇怪的咒...

9得票2回答
为什么在Haskell中点阵风格即使有许多点也被称为无点风格?“point-free”这个术语的起源是什么?

我目前正在阅读《Haskell趣学指南》,在第85页上看到了“无点样式”的概念。然而,fn函数里充满了点!这让我很困惑。 为什么这种写函数的方式被称为“无点样式”,而实际上它充满了点? 我应该如何理解“无点样式”这个概念?它是在哪个方面“无点”的? “无点样式”这个术语源于何处?也许来自一...

8得票3回答
在重构do-notation时添加操作而不改变结果

我希望在Haskell中依次组合两个Monad操作,丢弃第二个操作产生的任何值,并将参数传递给两个操作。目前我正在使用以下类似的do块: ask = do result <- getLine putStrLn result return result 我希望写得更加简洁...