Cli*_*ton 5 monads haskell category-theory
我有一个t支持以下三个操作的类型:
extract :: t a -> a
duplicate :: t a -> t (t a)
(<*>) :: t (a -> b) -> t a -> t b
Run Code Online (Sandbox Code Playgroud)
当然,我也可以写bind:
(>>=) :: f a -> (a -> f b) -> f b
(>>=) x f = f (extract x)
Run Code Online (Sandbox Code Playgroud)
和join:
join :: t (t a) -> t a
join = extract
Run Code Online (Sandbox Code Playgroud)
但我不能写fmap,也不pure
因此,这有点像“单子”,有点像“共鸣”,但是没有fmap。
从技术上讲,我有一个fmap和pure,但它们受到限制。
我查看了各种受约束的仿函数样式的程序包,但它们似乎也都受约束(<*>),但就我而言(<*>),不受约束。
是否可以将这种类型转换为现有的类型类?
如果有人有兴趣,我处理的实际类型的Closure类型