相关疑难解决方法(0)

如何在'n'次调用相同的函数?

可能重复:
库函数自行组合n次函数

我需要一个函数来多次调用另一个函数.

所以它看起来像这样fn = g(g(g(g(l))))其中n等于嵌套的函数g的数量.

我应该怎么做呢?谢谢!

haskell

24
推荐指数
3
解决办法
3万
查看次数

与二元算子的组合?

我想做一些相当简单的事情; 我正在使用带有Data.Map insertWith的运算符(++),它工作正常,但我想消除创建的值中的重复,所以想要用nub组合它.

我试过(nub(++)),(nub $(++)),(nub.(++)),都无济于事,因为(++)的类型与预期的小块类型不匹配( [一个] ).

我当然可以定义一个辅助函数或一个lambda,但我认为可能有一个更清晰的组合.

请提示!

haskell function-composition

8
推荐指数
2
解决办法
762
查看次数

反向cur ??

我想以某种方式撰写功能.请考虑伪代码中的这两个函数(不是F#)

F1 = x + y
F2 = F1 * 10 // note I did not specify arguments for F1, 'reverse curry' for lack of a better word
Run Code Online (Sandbox Code Playgroud)

我希望F#做的是弄清楚,因为

let F1 x y = x + y
//val F1 : int -> int -> int
Run Code Online (Sandbox Code Playgroud)

代码let F2 = F1 * 10会给我与F1:相同的签名val F2 : int -> int -> int,并且调用F2 2 3将导致50:(2 + 3)*10.这将是相当聪明的...

发生的事情是完全不同的.第一行符合预期:

let F1 x y = x + y
//val F1 : …
Run Code Online (Sandbox Code Playgroud)

f# functional-programming currying higher-order-functions

7
推荐指数
1
解决办法
1850
查看次数

Haskell中的通用函数组合

我在这里阅读,我注意到,例如,如果我有以下函数定义:

a :: Integer->Integer->Integer
b :: Integer->Bool
Run Code Online (Sandbox Code Playgroud)

以下表达式无效:

(b . a) 2 3
Run Code Online (Sandbox Code Playgroud)

组合的功能必须只有一个参数,这很奇怪.

这个限制是因为在Haskell中定义最通用的一个问题还是有其他原因?

我是Haskell的新手,所以我问的也许是无用的问题.

haskell function function-composition

6
推荐指数
1
解决办法
726
查看次数

带排序和 (++) 的 Haskell 点运算符

我现在正在学习haskell,并试图找出前缀、中缀、优先级等的所有规则。

在尝试实现一个附加两个列表并对它们进行排序的函数时,我从以下开始:

appendAndSort :: [a] -> [a] -> [a]
appendAndSort = sort . (++)
Run Code Online (Sandbox Code Playgroud)

它不编译。

下列的:

appendAndSort :: Ord a => [a] -> [a] -> [a]
appendAndSort = (sort .) . (++)
Run Code Online (Sandbox Code Playgroud)

另一方面确实有效。

为什么我必须在排序时添加第二个点并在其周围添加括号?

haskell dot-operator

0
推荐指数
1
解决办法
130
查看次数