我正在寻找一种在Purescript中编写函数List Char -> String
的惯用方法。
这似乎是一件很简单的事情,但我是Purescript的新手并且已经暂时浏览文档一段时间没有任何进展!
背景信息:我正在将一个简单的函数从Haskell移植到Purescript
generateId :: Int -> [Char]
这将生成指定长度的String。将代码转换为使用List Char
操作非常容易(其中List
来自Purescript中的Data.List
)。在Haskell中[Char]
与String
相同,因此不需要其他处理,但是,我找不到在Purescript中从List Char
转换为本地String
的函数!
<击>
我的搜索引导我fromCharArray :: Array Char -> String
Data.String
,但我无法找到从List Char
转换为Array Char
的方式!
我可以通过折叠List Char
并使用Array Char
构建snoc
来手动转换它们,但我肯定错过了一个内置的解决方案看起来像Purescript中的基本字符串操作!
击>
修改 fromList
可以将任何Unfoldable
(例如数组)转换为List
。仍然保留这个问题,以防有更实用的方法。
答案 0 :(得分:6)
我同意你的编辑。 Data.String.fromCharArray <<< Data.List.fromList
对我来说听起来不错。 fromCharArray
在原生JS中使用array.join("")
实现。
更新: fromList
现已弃用 - 请改用toUnfoldable
答案 1 :(得分: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 []
""