134得票7回答
"point free"风格(在函数式编程中)是什么?

最近我注意到一个短语——“无参风格”... 首先,有个问题是关于对象/记录"无参风格"的:这里,还有一个问题是关于Haskell中柯里化和“无参风格”的混淆:这里。 然后,我在这里发现他们提到了“另一个值得讨论的话题是作者对‘无参风格’的厌恶。” 什么是“无参风格”?能否给出简明的解释?...

124得票4回答
这个斐波那契函数是如何被记忆化的?

这个斐波那契函数是通过什么机制进行记忆化的?fib = (map fib' [0..] !!) where fib' 1 = 1 ...

73得票4回答
"点无关"风格在函数式编程中有哪些优缺点?

我知道在某些语言(比如 Haskell)中,追求的是点自由风格,或者从来不显式地引用函数参数名称。这对我来说是一个非常难以掌握的概念,但它可能有助于我理解该风格的优势(甚至缺点)。是否有人能够解释一下呢?

60得票6回答
Haskell函数组合运算符的类型为(c→d) → (a→b→c) → (a→b→d)。

普通函数组合的类型为(.) :: (b -> c) -> (a -> b) -> a -> c 我认为这应该适用于类似以下类型:(.) :: (c -> d) -> (a -> b -> c) -> a -> b -> d...

52得票2回答
在 Haskell 中,(f .) . g 意味着什么?

我曾经见过很多函数都是按照 (f .) . g 这种模式定义的。例如:countWhere = (length .) . filter duplicate = (concat .) . replicate concatMap = (concat .) . map 这是什么意思?

45得票7回答
在Haskell中执行布尔函数的“and”和“or”操作

我刚刚写了以下两个函数:fand :: (a -> Bool) -> (a -> Bool) -> a -> Bool fand f1 f2 x = (f1 x) && (f2 x) f_or :: (a -> Bool) -> (a...

40得票2回答
如何使用Monad实例以及关于(->)的困惑

在不同的问题中,我发现评论中有关于使用(->)单子实例(instance of Monads)来实现无参式风格(point-free style)的提示。 对于我来说,这有点抽象。好吧,我看到(->)上有Arrow实例,似乎(->)可以用于实例表示法,但不能用于类型声明(那...

36得票5回答
我该如何理解 "(.) . (.)"?(涉及IT技术)

我相信我理解Functor中的,但在函数上却让我头疼了几个月。 我看到过你可以将(.)的定义应用于(.).(.),但我忘记了如何做。 当我自己尝试时,总是出错: (.) f g = \x -> f (g x) (.) (.) (.) = \x -> (.) ((.) x) \x...

30得票4回答
在Haskell中点无风格地将多个函数应用于相同的值

有一天我感到无聊,想要锻炼一下我的大脑,于是我决定做99个Haskell问题,但我限制自己只使用点式风格。在使用点式风格时,经常出现一个问题:如果您希望将多个函数应用于相同的值,同时保持每个结果作为独立实体,该怎么办?使用指向符号:foobar x = [id x, reverse x] 而我...

29得票7回答
组合函数的组合:(.).(.) 如何工作?

(.) 接受两个仅接受一个值并返回一个值的函数:(.) :: (b -> c) -> (a -> b) -> a -> c 由于(.)需要两个参数,我觉得(.).(.)应该是无效的,但它完全没有问题:(.).(.) :: (b -> c) -> (a ...