怎样在purescript中将字符列表转换成字符串?

6
我正在寻找一种用纯函数编写 List Char -> String 函数的成语化方式。
这似乎是一件简单的事情,但我对 Purescript 还不太熟悉,浏览文档已经有一段时间了,但仍没有进展!
背景信息:我正在将一个简单的 Haskell 函数移植到 Purescript。
generateId :: Int -> [Char]

此函数生成指定长度的字符串。将代码转换为使用 List Char 操作非常容易(其中 List 取自 Purescript 中的 Data.List)。在 Haskell 中,[Char]String 相同,因此不需要进行其他处理,但是在 Purescript 中,我找不到一种将 List Char 转换为本地 String 的函数!

我的搜索结果是在 Data.String 中找到了 fromCharArray :: Array Char -> String,但是我找不到一种方法将 List Char 转换为 Array Char

我可以通过对 List Char 进行折叠并使用 snoc 构建 Array Char 来手动在它们之间进行转换,但是在 Purescript 中这似乎是基本的字符串操作,我肯定错过了一种内置解决方案!

编辑:fromList 可以将任何 Unfoldable(例如数组)转换为 List。如果有更符合惯用法的方法来实现这一点,仍然保留此问题。


1
Data.String.fromCharArray <<< Data.List.fromList 对我来说听起来相当不错。 fromCharArray 是用本地JS实现的,使用 array.join("") - stholzm
是的,我会把它作为实现这一目标的惯用方式。谢谢! - Anupam Jain
@stholzm,你应该将其发布为答案,因为它解决了问题... - sclv
2个回答

6

我同意你的修改。对我来说,Data.String.fromCharArray <<< Data.List.fromList听起来相当不错。fromCharArray是用本地JS实现的,使用array.join("")

更新: fromList现在已经过时了 - 使用toUnfoldable代替。


2

[更新于2021年1月]

在PureScript 0.13.8中:

import Prelude 

> import Data.Array (toUnfoldable)
> import Data.String.CodeUnits (fromCharArray)
> fromListChars = fromCharArray <<< toUnfoldable
> fromListChars ['2', '0', '2', '1']
"2021"

> fromListChars []
""

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