首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >haskell的无点式风格

haskell的无点式风格
EN

Stack Overflow用户
提问于 2014-02-26 09:59:16
回答 2查看 749关注 0票数 0

我想要改变

代码语言:javascript
复制
function (x:xs) = unwords (map reverse (words (x:xs)))

我不能这么做。

不是很简单吗

代码语言:javascript
复制
function = unwords . map . reverse . words

请帮助我改变这个点的自由风格。

在执行命令行下面的操作后,我尝试使用pointfree

代码语言:javascript
复制
cabal install pointfree

所有编译和安装的东西,但是当我在终端中输入pointfree时,它总是说没有这样的东西。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-26 10:10:51

您的定义几乎是正确的,可以在ghci解释器中进行测试,应该是

代码语言:javascript
复制
ghci> let function = unwords . map reverse . words
ghci> function "The quick brown fox"
"ehT kciuq nworb xof"

因为reverse是地图的一个论点。基本上,要将类似管道的函数foo a3 = f a1 (g a2 (h a3)) (由嵌套函数调用组成)更改为无点函数,其中显式参数(在本例中为a3)是最后调用的参数,您需要删除它并用.组合运算符:foo = f a1 . g a2 . h替换嵌套括号。但是,当存在多个参数或多次使用该参数时,此技巧不起作用。要想使用无点函数进行操作,您应该了解combinatory logic

编辑:哦,我知道你试着用 tool自动转换函数.使用cabal编译的二进制文件被放置在特定的目录中(例如,C:\Users\Username\AppData\漫游\cabal\bin在Windows,AFAIR中),默认情况下它可能不会添加到PATH中,因此命令行解释器找不到可执行文件。

票数 8
EN

Stack Overflow用户

发布于 2014-02-26 10:05:58

reversemap的一个参数,所以您不必用reverse编写map,而是要使用其他函数组成完整的map reverse

这样做的正确方法是:

代码语言:javascript
复制
function = unwords . map reverse . words
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22037819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档