我想知道是否有人熟悉 Haskell 中前奏曲的read
功能。
此函数的类型如下。
Read a => String -> a
有人可以用几个例子来解释我如何使用这个函数以及字符串可以转换为什么类型吗?
Read a => String -> a
表示a
可以是Read
类实例的任何类型。对于满足该要求的类型,它必须至少实现Read
的readPrec
或readsPrec
函数之一。许多内置类型都准备好提供实现,您可以使用deriving
为自己的自定义data
类型生成实现。
若要指定要read
字符串的内容,可以直接键入注释调用:
read "1" :: Int
或者给包含read
调用的函数提供一个签名,以便编译器可以弄清楚你想要什么:
myFunc :: String -> Int
myFunc s = read s
签名表示该函数返回一个 Int,因此编译器可以推断出要read
s
的类型,因为myFunc
返回read
计算的调用的任何内容。