6

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

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

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

generateId :: Int -> [Char]

这会生成一个指定长度的字符串。将代码转换为使用操作非常容易List Char(其中List来自Data.ListPurescript)。在 Haskell[Char]中是一样的,String所以不需要其他处理,但是,我在 Purescript 中找不到转换List Char为原生的函数!String

我的搜索引导我进入fromCharArray :: Array Char -> StringData.String但是我找不到从转换List Char为的方法Array Char

我可以通过折叠List Char和构建Array Charusing在它们之间手动转换snoc,但我肯定错过了一个内置解决方案,用于在 Purescript 中看似基本的字符串操作!

编辑: fromList用于从任何Unfoldable(例如数组)转换为List. 如果有更惯用的方法来实现这一点,仍然会留下这个问题。

4

2 回答 2

6

我同意你的编辑。Data.String.fromCharArray <<< Data.List.fromList对我来说听起来很不错。fromCharArray在本机 JS 中使用array.join("").

更新: fromList现在已弃用 -toUnfoldable改为使用

于 2016-03-19T18:27:14.083 回答
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 []
""
于 2021-01-01T17:45:31.280 回答