Haskell的读取功能说明

ser*_*lty 2 haskell function haskell-prelude

我想知道是否有人熟悉readHaskell中的Prelude 函数。

该函数的类型如下。

Read a => String -> a
Run Code Online (Sandbox Code Playgroud)

有人可以通过一些示例向我解释如何使用此函数以及将String强制转换为哪种类型吗?

谢谢

Car*_*ate 5

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

要指定您想要read的字符串形式,可以直接在调用中输入注释:

read "1" :: Int
Run Code Online (Sandbox Code Playgroud)

或给函数加上read一个对签名的调用,以便编译器可以找出所需的内容:

myFunc :: String -> Int
myFunc s = read s
Run Code Online (Sandbox Code Playgroud)

签名表明该函数返回一个Int,因此编译器可以推断出要键入的类型,read s因为myFunc返回了要求值的任何调用read