スカラーの場合、pure(またはそのようなもの)を使用したい場合、モナドの一種の汎用関数を書くにはどうすればよいですか? Haskellではこの署名のように: f :: Monad m => a -> m b
事があり、私が見つけたジェネリックpureかreturnありませんので、私は本当にモナドmにaを荷造りすることはできません。
SMLでOption Monadを実装したいので、それらをhaskellで使用するのと同じ方法で使用できます。私がしたことはうまくいかない。 infix 1 >>=
signature MONAD =
sig
type 'a m
val return : 'a -> 'a m
val >>= : 'a m * ('a -> 'b m) -> 'b m
end;
Promptの定義とそのBindインスタンスについては、hereと記載されており、これがPurescriptでどのように見えるかを調べようとしていました。 私は存在タイプとしてPurescript.Existsを使用しています。マイdefintionは次のようになります。 data PromptAskF p r a
= PromptAskF (p a) (a -> Prompt p r)
私は、さまざまな状況で異なる操作のための2つのフリーモナドを持っています。しかし、1(major)DSLは、特定の操作は、コンテキストにある場合、別の1(action)が含まれている必要があります: import Control.Monad.Free
data ActionFunctor next = Wait Timeout next
| Read URI next
私はモナドが(スカラだけではなく、スカラーを使って)理解しています。のは、モナドのほとんど(私の意見では)簡単な例を考えてみましょう: scala.Some
いくつかの記事が述べているように、its classic sense内のすべてのモナドはflatMapとunit機能のためのいくつかのルールを守る必要があります。ここで は、私はそれfrom the category theory sta
でリターンを使用すると、これは>>=のタイプです: (>>=) :: Monad m => m a -> (a -> m b) -> m b
それは2番目の引数としての機能を必要とします。 そして、ここではreturnのタイプです: return :: Monad m => a -> m a
戻りm a そして、これは明らかにチェックを入力します。 (>>) :: Monad m => m