Haskell的read函数解释

Haskell's read function explanation

不知是否有人熟悉 Haskell 中 Prelude 的 read 功能。

此函数的类型如下。

Read a => String -> a

有人可以通过几个示例向我解释如何使用此函数以及可以将字符串转换为哪些类型?

谢谢

Read a => String -> a 表示 a 可以是 Read class 的实例的任何类型。对于满足该要求的类型,它必须至少实现 ReadreadPrecreadsPrec 函数之一。许多内置类型已经提供了一个实现,您可以使用 deriving 为您自己的自定义 data 类型生成一个实现。

要指定你想要read的字符串,你可以直接输入注释调用:

read "1" :: Int

或者给包含对 read 的调用的函数一个签名,这样编译器就可以弄清楚你想要什么:

myFunc :: String -> Int
myFunc s = read s

签名表明函数 returns 是一个 Int,因此编译器可以推断出 read s 的类型,因为 myFunc returns 无论如何对 read 的调用评估为。