11得票5回答
使用 Ramda 实现的无参风格大写函数

尽管编写一个将单词首字母大写的函数是很容易的,例如: "hello" => "Hello" "hi there" => "Hi there" 但如何使用Ramda JS以点无式样式编写它呢? https://en.wikipedia.org/wiki/Tacit_programming

11得票2回答
将Haskell代码片段组合起来,得到更完整的图像。

这是我在某处找到的代码,但我想知道它是如何工作的: findIndices :: (a -> Bool) -> [a] -> [Int] findIndices _ [] = [] findIndices pred xs = map fst (filte...

11得票3回答
向我解释(.)(.)的含义。

我正在学习 Haskell,虽然我很喜欢这门语言,但我发现 Pointfree 风格完全无法阅读。我遇到了下面这个只包含 ASCII 字符的函数。f = (.)(.) 虽然我了解它的类型签名和它的作用,但我却无法理解为什么它这样做。所以,请问有人能为我写出它的非点释放版本,并且可以逐步回到点释...

11得票2回答
`ap zip tail`表达式是如何工作的?

我在想如何将f x = zip x (tail x)改写成点-free形式。于是我使用了pointfree程序,得到的结果是f = ap zip tail,其中ap是Control.Monad中的函数。我不理解这个点-free定义是如何工作的。如果可以从类型的角度理解它,我希望我能理解它。im...

11得票1回答
是否可以使用不同的组合子来使点无函数更易读,而不是使用 (.)?涉及到 IT 技术。

有哪些潜在的替代表示方法(例如使用箭头、镜头、Haskell惯用语、do语法)可以使无参考表达式更容易读懂,看起来更像英语? 下面是一个简单的例子:qNameIs :: String -> QName -> Bool qNameIs = (. qName) . (==) QNam...

11得票2回答
将数字函数作为Num的实例?

我希望能够在Haskell中使用二进制运算符组合数字函数。因此,例如,对于一元数字函数:f*g 应该翻译为:\x -> (f x)*(g x) 同样地,加法也可以这样做。制作自己的运算符相当简单,但我真的很想将 Num a => a -> a 函数实例化为 Num,但我不确定...

10得票5回答
无参风格和使用$符号

如何将$和点自由样式结合起来使用? 下面是一个清晰的实用函数示例:times :: Int -> [a] -> [a] times n xs = concat $ replicate n xs 只是编写concat $ replicate会产生错误,同样你也不能编写conca...

10得票1回答
Haskell中柯里化和无参函数风格的混淆问题

我试图实现这个函数every :: (a -> IO Bool) -> [a] -> IO Bool 这是这个问题的主题。我尝试在没有显式递归的情况下完成此操作,我得出了以下代码:every f xs = liftM (all id) $ sequence $ map f ...

10得票3回答
Haskell中的元素数量(以点自由方式表示)

我希望定义一个函数,该函数计算列表中满足给定谓词的元素数量: number_of_elements :: (a -> Bool) -> [a] -> Int number_of_elements f xs = length (filter f xs) 例如: numb...

10得票3回答
f1 = 翻转(const map)。这个函数是怎么工作的?

假设我们有这个无参函数:f1 = flip const map 我不知道它是如何工作以及它的作用是什么? 也就是说,我知道map、const和flip函数的含义,但是把它们组合在一起就完全不懂了。这个函数内部究竟发生了什么? 它似乎每次都返回我传入的同一件事情,但是...为什么呢?