5
okamlにフリーモナドライブラリーを書き込もうとしていますが、これはhaskellのControl.Monad.Freeの後にありますが、hoistFreeの実装では一点に止まっています。ocamlのタイプを拡大
hoistFree :: Functor g => (forall a. f a -> g a) -> Free f b -> Free g b
hoistFree _ (Pure a) = Pure a
hoistFree f (Free as) = Free (hoistFree f <$> f as)
ここは翻訳を試みたものです。
残念ながら、私はgのタイプを正しく広げていないと言ってエラーが発生します。
Error: This definition has type ('b m t -> 'b m t) -> 'b m -> 'b m
which is less general than 'a. ('a t -> 'a t) -> 'b m -> 'b m
私は関数型注釈を挿入しない場合、すべてが正常に動作しますが、エラーメッセージが言うように、その後、私はFのための一般的なタイプを得ることはありません。 どこに問題がありますか?どのように私はfの種類を広げることができますか?
回答ありがとうございます。私はまだ私の特定の設定であなたのアイデアを実装しようとしています。 – stackman