Traversablesの自然法はどういう意味ですか?


8

自然法は次のように述べています:

t . traverse f == traverse (t . f) -- for every applicative transformer t

法則のRHSの場合、fの型がの場合、関数構成のためApplicative a => x -> a y、tはの型でなければなりません(Applicative a, Applicative b) => a y -> b y

LHSの場合、トラバースfのタイプは(Applicative a, Traversable c) => c x -> a (c y)です。しかし、トラバースfはtで構成されているためです。トラバースf、tのタイプは(cx-> a(cy))-> b yでなければなりません。

LHSの場合、tの型はa(cy)-> byですが、RHSの型はay-> b yです。タイプの観点から法律はどのように聞こえますか?

編集:LHSのタイプtを修正


LHS控除のtのタイプを修正しました。法律がどのように続いているかはまだわかりません。
user4132

回答:


6

あなたが見逃したのは、それtが自然な変換であると思われることだと思います(おそらく、構造を維持するプロパティも必要です)。自然変形は次のように定量化されます。

t :: forall z. a z -> b z   -- "t is an N.T. from a ~> b"

右側では、でインスタンス化しyていますt :: a y -> b y。左側では、c yを取得するためにインスタンス化していますa (c y) -> b (c y)。私の考えでは、自然の変化は、内部が何であっても、外層を変化させるというものです。自然法則は常に、何かがインスタンス化されるさまざまな方法間の関係について話します。

t                :: forall z. a z -> b z

f                :: x -> a y
t                :: a y -> b y           -- instantiated at y
t . f            :: x -> b y
traverse (t . f) :: c x -> b (c y)

traverse f       :: c x -> a (c y)
t                :: a (c y) -> b (c y)   -- instantiated at (c y)
t . traverse f   :: c x -> b (c y)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.