Ign*_*rov 3 haskell list monoids
我的意思是像列表这样的设备:
mempty = [ ]
lift x = [x]
mappend = (++)
Run Code Online (Sandbox Code Playgroud)
仅仅是IsList吗?
鉴于您问题的框架,我倾向于描述您的举升...
(:[]) :: a -> [a]
Run Code Online (Sandbox Code Playgroud)
...反映了列表是Haskell类型的免费monoid编码的方式。特别是,通用属性(由上面链接到的“ 程序员的类别理论”这一章结尾处的图说明)表示:
-- q is an arbitrary a -> m function, with m being an arbitrary monoid.
foldMap q . (:[]) = q
Run Code Online (Sandbox Code Playgroud)
至于类型去,Alternative似乎也表达你在找什么:empty和(<|>)一般预计monoidal操作,并且pure从Applicative可作为您的升力。但是,我不确定之间是否有任何联系,pure以及Alternative是否可以阐明pure这种构造中的作用的方法。(在后一点上,您可能会发现这个与切线相关的问题,讨论了Alternative与Applicative有趣的关系。)
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |