Haskell弦乐
示例
文字的类型
没有任何扩展名,字符串文字的类型(即,双引号之间的内容)只是一个字符串,又称字符列表:
Prelude> :t "foo" "foo" :: [Char]
但是,OverloadedStrings启用扩展名后,字符串文字变得多态,类似于数字文字:
Prelude> :set -XOverloadedStrings Prelude> :t "foo" "foo" :: Data.String.IsString t => t
这使我们可以定义类似字符串的类型的值,而无需任何显式转换。本质上,OverloadedStrings扩展名只是将每个字符串文字包装在通用fromString转换函数中,因此,如果上下文需要例如更有效的Text而不是String,则您不必自己担心。
使用字符串文字
{-# LANGUAGE OverloadedStrings #-}
importData.Text(Text, pack)
importData.ByteString(ByteString, pack)
withString :: String
withString = "Hello String"
-- The following two examples are only allowed with OverloadedStrings
withText :: Text
withText = "Hello Text" -- instead of: withText = Data.Text.pack "Hello Text"
withBS :: ByteString
withBS = "Hello ByteString" -- instead of: withBS = Data.ByteString.pack "Hello ByteString"注意,我们如何能够构造值,Text并ByteString以与构造普通String(或[Char])值相同的方式,而不是使用每种类型的pack函数来显式编码字符串。
有关OverloadedStrings语言扩展的更多信息,请参见扩展文档。
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短