Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell中的函数合成问题_Haskell_Io_Function Composition - Fatal编程技术网

Haskell中的函数合成问题

Haskell中的函数合成问题,haskell,io,function-composition,Haskell,Io,Function Composition,所以。。。我写这篇文章是为了从用户那里得到5个矩形: rectangles <- sequence . take 5 . cycle [getRect] [编辑] 我知道(.)代表函数组合,$代表应用程序,但我的组合应该返回函数并应用[getRect]。难道不是吗 我从纯数学的角度来看这个问题。这么说吧 cycle : a -> b take 5 : b -> c -- partially applied sequence : c -> d 那为什么我的作文不好写呢

所以。。。我写这篇文章是为了从用户那里得到5个矩形:

rectangles <- sequence . take 5 . cycle [getRect]
[编辑]

我知道(.)代表函数组合,$代表应用程序,但我的组合应该返回函数并应用[getRect]。难道不是吗

我从纯数学的角度来看这个问题。这么说吧

cycle : a -> b
take 5 : b -> c  -- partially applied
sequence : c -> d
那为什么我的作文不好写呢?它应该是一个参数为[getRect]的函数,如下所示:

(sequence . take 5 . cycle)([getRect]) : a -> d

其中,
a
是[getRect],而
d
是IO操作的结果。

函数应用程序绑定比
()
更紧密

sequence . take 5 . cycle [getRect]

sequence . take 5 . (cycle [getRect])
由于
cycle[getRect]
是一个列表,而不是一个函数,因此会出现错误

可以使用括号获得所需的优先级:

rectangles <- (sequence . take 5 . cycle) [getRect]

函数应用程序绑定比
(.)更紧密

sequence . take 5 . cycle [getRect]

sequence . take 5 . (cycle [getRect])
由于
cycle[getRect]
是一个列表,而不是一个函数,因此会出现错误

可以使用括号获得所需的优先级:

rectangles <- (sequence . take 5 . cycle) [getRect]

我想你误解我了。你能再看看我的问题吗?我没有在循环后使用(.),我已经给我的组合函数留出了空间来应用
[getRect]
。现在我注意到我应该把
take 5
用大括号括起来,因为它应该返回部分应用的函数,这样它就把
()
作为第二个参数,但它仍然不起作用。@Reygoch-函数应用程序绑定得比
(.)
更紧密,所以
取5。循环[getRect]
取5。(cycle[getRect])
我想你误解了我的意思。你能再看看我的问题吗?我没有在循环后使用(.),我已经给我的组合函数留出了空间来应用
[getRect]
。现在我注意到我应该把
take 5
用大括号括起来,因为它应该返回部分应用的函数,这样它就把
()
作为第二个参数,但它仍然不起作用。@Reygoch-函数应用程序绑定得比
(.)
更紧密,所以
取5。循环[getRect]
取5。(循环[getRect])