ser*_*lty 2 haskell function haskell-prelude
我想知道是否有人熟悉readHaskell中的Prelude 函数。
该函数的类型如下。
Read a => String -> a
Run Code Online (Sandbox Code Playgroud)
有人可以通过一些示例向我解释如何使用此函数以及将String强制转换为哪种类型吗?
谢谢
Read a => String -> a表示a可以是该类实例的任何类型Read。对于类型为满足该要求,它必须至少是具有的任一个实现Read的readPrec或readsPrec功能。许多内置类型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。