3
Hedgehogは、次のように定義されたHTraversable
クラスがあります。値はコンクリートや抽象的であるかどうかを超えるタイプをパラメータ化するために彼らのVar
タイプで使用されて高次のトラバーサルファンクタに対応する光学系はありますか?
-- | Higher-order traversable functors.
--
class HTraversable t where
htraverse :: Applicative f => (forall a. g a -> f (h a)) -> t g -> f (t h)
。 t
は(* -> *) -> *
の種類を持ち、実際にそのクラスを持たないものの、上位のファンクタですが、f
,g
およびh
は種類が* -> *
です。私はいくつかの異なるライブラリで定義された同じことを見てきました。
これで光景を得る方法はありますか?私はそれが何をするのかわからないと告白し、レンズや普通のTraversable
のどちらかで快適に過ごせません。
うん、面白いです。それに対応するものがありますが、他の光学系と実際には適合しません。私はこれが働く "高次の光学"のセットがあるのだろうかと思います。 –
'HTraversable'は、ファンクションカテゴリからHaskへのファンクションのカテゴリにあるオブジェクト用です。あなたは 'traversable'が' itraverse :: Applicative f =>(forall x ax - > f(bx)) - >(のようになります)のfunctorカテゴリ(モナド変換子など)で_endofunctors_のカテゴリで作業することができますforall x .sx - > f(tx)) 'である。このタイプのトラバーサルは '(。)'で構成され、プリズムなども構築できます。しかし、「HTraversable」と「ITraversable」は、別々のカテゴリに構築されているため、「レンズ」と相互運用することはできません。 –