私の質問は、ハスケルのモナドの最初の法則から生じます:join . fmap join = join . join
。私は、この例では、型のインスタンスではなく、型を使用しているという事実によって混乱しています`join`と `fmap join`はHaskellと同じです(カテゴリ理論の観点から)?
:この法律は、以下の画像で示されているHaskell/Category_theoryで
。カテゴリHask
のオブジェクトは型であり、インスタンスではないためです。
だから私は、私が得たものをここにタイプして、この例を再描画しようとした、と:
この写真では、両方の矢印(join
とfmap join
)がM(M(X))
につながります。これは同じオブジェクトですか、または2つの異なるM(M(X))
がありますか?
私は(ちょうどコメントを参照してください)、結果の構造は同じですが、値はありません。モナド変圧器と比較して、どのモナドの点であるか:「m a」の「a」に影響を与えるが、「m」は残す。 「m」に影響するモナド変圧器と比較して、「a」を残す。 – urbanslug