【发布时间】:2014-05-03 17:23:48
【问题描述】:
正如 Nikita Volkov 在他的问题 Data.Text vs String 中提到的那样,我也想知道为什么我必须在 haskell 中处理不同的 String 实现 type String = [Char] 和 Data.Text。在我的代码中,我经常使用pack 和unpack 函数。
我的问题:有没有办法在两种字符串类型之间进行自动转换,这样我就可以避免经常写pack 和unpack?
在 Python 或 JavaScript 等其他编程语言中,如果需要,可以在整数和浮点数之间进行自动转换。我也可以在haskell中达到类似的效果吗?我知道,上面提到的语言是弱类型的,但我听说 C++ 也有类似的特性。
注意:我已经知道语言扩展 {-# LANGUAGE OverloadedStrings #-}。但据我了解,这种语言扩展只适用于定义为"..." 的字符串。我想对从其他函数获得的字符串或函数定义中作为参数的字符串进行自动转换。
扩展问题: Haskell. Text or Bytestring 也涵盖了 Data.Text 和 Data.ByteString 之间的区别。有没有办法在String、Data.Text和Data.ByteString这三个字符串之间进行自动转换?
【问题讨论】:
-
如果你想要类型推断,没有这样的东西,也不可能。
-
AFAIK 对此的回答是否定的,Haskell 不会自动在类型之间转换。您只能对文字进行自动转换,因为字符串文字的类型为
AsString a => a,就像数字文字的类型为Num a => a,但您不会获得运行时值的自动转换。 -
感谢您的快速回答!
标签: string haskell type-conversion