私はgiven次のクラスインタフェースしてきた:一般的なネストされたモナド操作ですか?
class Misty m where
banana :: (a -> m b) -> m a -> m b
unicorn :: a -> m a
そして今、私は有効にするために、これを修正するために必要だ:
jellybean :: (Misty m) => m (m a) -> m a
私は質問がのサブクラスを追加するために私を推進していると考えていますMisty
、マルチパラメータで:
class Misty m => VeryMisty m a where
... banana' (Just (Just v)) = banana --?
私はMisty
にして関数を作成する方法がわかりませんよこのネストされたモナドを操作しますか?
私のアプローチが正しいのか、最も単純なのかがわかりませんか?
「バナナ」と「ユニコーン」の意味で「ゼリービーン」を定義するだけだと思います – Euge
「ミスティ」は「モナド」、「バナナ」は「= <<」です= ')、' unicorn'は 'return'、' jellybean'は 'join'ですよね? – chepner