6
適用ファンクタf
が与えられたので、私は新しい適用ファンクタRev f
をf
のように変更しましたが、効果の順序は逆になりました。ここでは、次のとおりです。効果の順序を逆にする適用ファンクタ
import Control.Applicative
newtype Rev f a = Rev {unRev :: f a}
instance Functor f => Functor (Rev f) where
fmap f (Rev fx) = Rev (fmap f fx)
instance Applicative f => Applicative (Rev f) where
pure x = Rev (pure x)
(Rev ff) <*> (Rev fx) = Rev (pure (\x f -> f x) <*> fx <*> ff)
私の質問は
- ある(それは
Applicative
の法律に従わない)有効Applicative
インスタンスということですか? - この構成には名前がありますか?これはどこかに隠れているモジュールがありますか?
もし 'Backwards'アプリケーションファンクタに興味があれば、' Data.Functor.Reverse'が好きかもしれません。逆方向に折って行きます。興味深いのは、「tardis」状態変圧器です。 – dfeuer