我如何称呼也支持举重的Monoid?

Ign*_*rov 3 haskell list monoids

我的意思是像列表这样的设备:

mempty = [ ]
lift x = [x]
mappend = (++)
Run Code Online (Sandbox Code Playgroud)

仅仅是IsList吗?

dup*_*ode 6

鉴于您问题的框架,我倾向于描述您的举升...

(:[]) :: 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操作,并且pureApplicative可作为您的升力。但是,我不确定之间是否有任何联系,pure以及Alternative是否可以阐明pure这种构造中的作用的方法。(在后一点上,您可能会发现这个与切线相关的问题,讨论了AlternativeApplicative有趣的关系。)