在Haskell中如何使函数表达式“无点”

zqry0prt  于 6个月前  发布在  其他
关注(0)|答案(1)|浏览(81)

我有一个这样的Haskell函数:

in2out :: String -> String
in2out s = 
  show (sumAllLineValues $ lines s)

字符串
(其中sumAllLineValues在我的代码中定义。
我如何定义in2out无点,所以没有参数s

cx6n0qe3

cx6n0qe31#

要使函数成为pointfree,你需要重新安排它的所有参数的用法,这样它们就可以被减少。在这种情况下,参数已经被使用了一次,并且一直在右边,所以你需要做的就是把它从括号中取出来,你可以使用函数复合(.)来做到这一点:

in2out :: String -> String
in2out s = 
  (show . sumAllLineValues . lines) s

字符串
然后把它减少到:

in2out :: String -> String
in2out = 
  show . sumAllLineValues . lines

相关问题