在点实际符号表示下:
absoluteError x y = abs (x-y)
一个不清楚的点无符号示例:
absoluteError' = curry (abs . uncurry (-))
以下是您可以按照小步骤自行推导的方法:
absoluteError x y = abs (x-y) = abs ((-) x y) = abs ( ((-) x) y)
= (abs . (-) x) y = ( (abs .) ((-) x) ) y =
= ( (abs .) . (-) ) x y
f x y = g x y
,我们可以得出结论 f = g
。_B = (.)
。(abs .) . (-) = _B (abs .) (-) = _B (_B abs) (-) = (_B . _B) abs (-)
= ((.) . (.)) abs (-)
以下是几种方法:
absoluteError = (abs .) . (-)
absoluteError = ((.) . (.)) abs (-)
将“boobs运算符”命名为更符合政治正确的名称,并同时进行泛化。
(.:) = fmap fmap fmap
absoluteError = abs .: (-)
使用语义编辑器组合器:
result :: (o1 -> o2) -> (i -> o1) -> (i -> o2)
result = (.)
absoluteError = (result . result) abs (-)
当然,这些都是同一种技巧,只是有不同的名称。享受吧!