:pointfree表記で絶対誤差関数をポイントフリーの表記法で表現するより良い方法はありますか?好い加減な表記で
absoluteError x y = abs (x-y)
不明確例:
absoluteError' = curry (abs . uncurry (-))
:pointfree表記で絶対誤差関数をポイントフリーの表記法で表現するより良い方法はありますか?好い加減な表記で
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
、eta-reductionにより、f x y = g x y
場合我々はf = g
を締結します。
また、(絶対) `、しばらく
(abs .) . (-) = _B (abs .) (-) = _B (_B abs) (-) = (_B . _B) abs (-)
= ((.) . (.)) abs (-)
は、ここでの方法の一握りです。
absoluteError = (abs .) . (-)
absoluteError = ((.) . (.)) abs (-)
名前おっぱい演算子より政治的に正しい(と一体何何か、一般化同時にそれ)semantic editor combinatorsを使用して
(.:) = fmap fmap fmap
absoluteError = abs .: (-)
:
result :: (o1 -> o2) -> (i -> o1) -> (i -> o2)
result = (.)
absoluteError = (result . result) abs (-)
もちろん、これはまったく同じトリックであり、名前が違うだけです。楽しい!ここで
なぜ、 '。:'は標準のどこにも定義されていませんか?またはそれは? – leftaroundabout
@leftroundaboutそれはいくつかのハッカーパッケージで定義されていますが、ほとんどの人が余分な依存性が努力する価値があるとは思わないほど小さい定義です。 –
+1 'fmap fmap fmap'の場合+1です。 –
を
_B = (.)
を使用。 ( - ) ' – Vitusもしそれが明白であれば、何が間違っていますか?これは、ポイントフリーのバージョンが精神的に元に戻って読まれなければならないような例のようです... – Ben