Ben*_*ner 16 haskell pointfree
有点的表示法:
absoluteError x y = abs (x-y)
一个不明确的无点符号示例:
absoluteError' = curry (abs . uncurry (-))
Wil*_*ess 33
以下是您可以通过小步骤自行推导出来的方法:
absoluteError x y = abs (x-y) = abs ((-) x y) = abs ( ((-) x) y)
= (abs . (-) x) y = ( (abs .) ((-) x) ) y =
= ( (abs .) . (-) ) x y
Run Code Online (Sandbox Code Playgroud)
所以,通过eta-reduction,如果f x y = g x y我们得出结论f = g.
进一步,_B = (.)暂时使用,
(abs .) . (-) = _B (abs .) (-) = _B (_B abs) (-) = (_B . _B) abs (-)
= ((.) . (.)) abs (-)
Run Code Online (Sandbox Code Playgroud)
Dan*_*ner 26
这是一些方法.
absoluteError = (abs .) . (-)absoluteError = ((.) . (.)) abs (-)将胸部操作员命名为政治上更正确的东西(以及什么,同时概括它)
(.:) = fmap fmap fmap
absoluteError = abs .: (-)
Run Code Online (Sandbox Code Playgroud)使用语义编辑器组合器:
result :: (o1 -> o2) -> (i -> o1) -> (i -> o2)
result = (.)
absoluteError = (result . result) abs (-)
Run Code Online (Sandbox Code Playgroud)当然,这些都是同样的伎俩,只是名字不同.请享用!