将函数定义更改为无点样式

时间:2015-10-27 22:18:05

标签: haskell functional-programming pointfree

我在编写我的教授给我的代码时遇到了麻烦:

  

编写一个名为digit7的函数,该函数接受Int并返回Bool,表示7是否是其中一个数字。 (提示:使用show来   将数字转换为字符列表。)使用digit7创建一个   没有名为square7的参数的函数返回最小的参数   正方形包含7作为数字的数字。

我的代码是:

digit7 l = elem '7' (show l)

这样可行但是,我需要以无点样式编写的代码。我也很难找出square7函数。

1 个答案:

答案 0 :(得分:5)

对于digit7函数,您可以使用函数式合成将定义转换为无点样式:

digit7 = (elem '7') . (show)

这是因为:

   digit7 l
-> ((elem '7') . (show)) l     By substitution
-> (elem '7') ((show) l)       By definition of (.)
-> elem '7' (show l)           By operator precedence

对于square7功能,我建议使用dropWhilehead