有没有更好的方式来表达自由点符号的绝对误差函数?(Is there a better way to

2019-06-25 10:38发布

在贴题记法:

absoluteError x y = abs (x-y)

在pointfree符号不明确的例子:

absoluteError' = curry (abs . uncurry (-))

Answer 1:

这里是你如何能得到自己了,一小步一小步:

absoluteError x y = abs (x-y) = abs ((-) x y) = abs ( ((-) x) y) 
                  = (abs . (-) x) y = ( (abs .) ((-) x) ) y = 
                  = ( (abs .) . (-) ) x y

所以,通过ETA-还原 ,如果fxy = gxy我们得出结论: f = g

此外,使用_B = (.)片刻,

(abs .) . (-) = _B (abs .) (-) = _B (_B abs) (-) = (_B . _B) abs (-)
              = ((.) . (.)) abs (-)


Answer 2:

这里有办法了一把。

  1. 老式: absoluteError = (abs .) . (-) absoluteError = (abs .) . (-)
  2. 使用所谓的“操作者胸部”或“操作者猫头鹰” absoluteError = ((.) . (.)) abs (-)
  3. 命名胸部运营商更多的东西政治正确(和究竟发生了什么,同时概括它)

     (.:) = fmap fmap fmap absoluteError = abs .: (-) 
  4. 使用语义编辑组合子 :

     result :: (o1 -> o2) -> (i -> o1) -> (i -> o2) result = (.) absoluteError = (result . result) abs (-) 

当然,这些都是同样的伎俩,只是名称不同。 请享用!



文章来源: Is there a better way to express the absolute error function in point-free notation?