我想要改变
function (x:xs) = unwords (map reverse (words (x:xs)))我不能这么做。
不是很简单吗
function = unwords . map . reverse . words请帮助我改变这个点的自由风格。
在执行命令行下面的操作后,我尝试使用pointfree
cabal install pointfree所有编译和安装的东西,但是当我在终端中输入pointfree时,它总是说没有这样的东西。
发布于 2014-02-26 10:10:51
您的定义几乎是正确的,可以在ghci解释器中进行测试,应该是
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中,因此命令行解释器找不到可执行文件。
发布于 2014-02-26 10:05:58
reverse是map的一个参数,所以您不必用reverse编写map,而是要使用其他函数组成完整的map reverse。
这样做的正确方法是:
function = unwords . map reverse . wordshttps://stackoverflow.com/questions/22037819
复制相似问题