如何将字符列表转换为纯脚本中的字符串

How do I convert a list of chars to a string in purescript

我正在寻找一种在 Purescript 中编写函数的惯用方法 List Char -> String

这似乎是一件简单的事情,但我是 Purescript 的新手并且已经浏览了一段时间的文档但没有任何进展!

背景信息: 我正在将一个简单的函数从 Haskell 移植到 Purescript

generateId :: Int -> [Char]

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

我的搜索将我带到 Data.String 中的 fromCharArray :: Array Char -> String,但是我找不到从 List Char 转换为 Array Char!

的方法

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

编辑: fromList 用于将任何 Unfoldable(例如数组)转换为 List。如果有更惯用的方法来实现这一点,仍然悬而未决这个问题。

我同意你的修改。 Data.String.fromCharArray <<< Data.List.fromList 对我来说听起来不错。 fromCharArray 在原生 JS 中实现 array.join("").

更新: fromList 现在已弃用 - 使用 toUnfoldable 代替

[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 []
""