在Haskell中,是否有一个内置函数可以创建一个只包含一个元素的列表?

6

寻找一个内置函数,可以执行以下操作:

mklist x = [x]

好处是我可以在组合中使用它来创建一个元素的列表。请注意,(replicate 1) 可用,但是否有更直接的函数?这种情况下会很有用:

["Alice", "Bob", "Charlie"] >>= mklist . ("Hello " ++)
1个回答

12

单子的返回

return x

或者:

(:[]) x

字符数更少,但使用了更多的Shift键,因此打字可能更难。


当然,你的例子同样可以使用map来完成,但我假设你的真实场景更加复杂。 - Tom Lokhorst
5
Control.Applicative 中的 pure 也可以使用。这是四个不需要移位的字母!和 return 一样,任何类型错误可能会变得更加复杂。 - yatima2975
是的,虽然很遗憾pure不在Prelude中。但是如果您已经导入了Control.Applicative,那么pure就像我们Haskell程序员喜欢的那样简短明了。 - Tom Lokhorst
4
哦,单子类型的 return。+1 分数给它的巧妙和代码混淆! - Norman Ramsey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接