29

次の定義を見つけました

(%)  = flip fmap

次のようなコードを書くことができます。

readFile "/etc/passwd" % lines % filter (not . null)

私にとっては、代替案よりも理にかなっています。

filter (not . null) <$> lines <$> readFile "/etc/passwd"

明らかに、それは単なる順序の問題です。

他の誰かがこれをしますか?このようなコードを書かない正当な理由はありますか?

4

5 に答える 5

11

あなたのオペレーター(%)は、まさに(<&>)レンズパッケージのオペレーターです。

次の方法でインポートできます。

import Control.Lens.Operators ((<&>))
于 2016-07-01T13:24:49.943 に答える
7

Applicativeと呼ばれる型クラス用の同様の関数があり<**>ます。Functor を使用したり使用したりするのは、まったく合理的なことです。残念ながら、セマンティクスは とは少し異なるため<**>、直接拡張して にも適用することはできませんFunctor

于 2009-11-05T03:14:54.263 に答える
5
-- (.) is to (<$>) as flip (.) is to your (%).  

私は通常 (&) = flip (.) を定義します。それはあなたの例のように、関数構成のバックワードを適用できます。私の意見では、ポイントのないコードを理解しやすくします。

于 2009-11-05T05:31:31.583 に答える