在 dhall 中拆分字符串
Splitting a string in dhall
我正在玩 dhall,想知道如何实现形式为
的字符串拆分函数
λ(text: Text) -> λ(delimiter: Text) -> List Text
但是出现dhallhas no concept/type to represent individual characters.而且Prelude中没有这个功能
The only thing you can do with Text values is concatenate them
那么……这有可能吗?
现有的 Dhall 内置函数目前无法做到这一点。 Text
类型在概念上是不透明的,类似于 Double
。对于 Text
类型的值,您唯一可以做的就是连接它们,但您不能内省、解析或比较它们是否相等。
我以这种方式限制 Text
的最初理由是该语言鼓励将强类型表示上游上游输入其输入。例如,不是拆分字符串,而是要求字符串已经被拆分(即期望输入类型 List Text
而不是 Text
)。但是,这可能会在某个时候发生变化,因为标准并不是一成不变的,而是通过此处概述的过程随着时间的推移而发展的:
此外,即使不对语言进行更改,您仍然可以按照本指南使用 Haskell API 通过使用自己的内置函数扩展语言来进行试验:
编辑:自撰写此评论以来,有一件事发生了变化,即该语言现在支持 Text/replace
内置函数,因此即使您仍然无法拆分字符串,您也可以将一个分隔符替换为另一个分隔符。例如:
⊢ Text/replace " " "," "Foo Bar Baz"
"Foo,Bar,Baz"
我正在玩 dhall,想知道如何实现形式为
的字符串拆分函数λ(text: Text) -> λ(delimiter: Text) -> List Text
但是出现dhallhas no concept/type to represent individual characters.而且Prelude中没有这个功能
The only thing you can do with Text values is concatenate them
那么……这有可能吗?
现有的 Dhall 内置函数目前无法做到这一点。 Text
类型在概念上是不透明的,类似于 Double
。对于 Text
类型的值,您唯一可以做的就是连接它们,但您不能内省、解析或比较它们是否相等。
我以这种方式限制 Text
的最初理由是该语言鼓励将强类型表示上游上游输入其输入。例如,不是拆分字符串,而是要求字符串已经被拆分(即期望输入类型 List Text
而不是 Text
)。但是,这可能会在某个时候发生变化,因为标准并不是一成不变的,而是通过此处概述的过程随着时间的推移而发展的:
此外,即使不对语言进行更改,您仍然可以按照本指南使用 Haskell API 通过使用自己的内置函数扩展语言来进行试验:
编辑:自撰写此评论以来,有一件事发生了变化,即该语言现在支持 Text/replace
内置函数,因此即使您仍然无法拆分字符串,您也可以将一个分隔符替换为另一个分隔符。例如:
⊢ Text/replace " " "," "Foo Bar Baz"
"Foo,Bar,Baz"