gpt4 book ai didi

haskell - Haskell 中的读取函数

转载 作者:行者123 更新时间:2023-12-05 08:20:51 30 4
gpt4 key购买 nike

我是 Haskell 语言的新手,我在使用 read 函数时遇到了一些问题。准确地说,我的理解是:

read "8.2" + 3.8

应该返回 12.0,因为我们希望返回与第二个成员相同的类型。我真正不明白的是为什么:

read "True" || False

返回真值?好吧,它返回了和 False 相同的类型,也就是 Boolean,但是我不明白的是为什么第一个成员。我想我有一个模糊的想法,比如,在这种情况下,返回函数将返回第一个成员,因为条件是 || ?请帮帮我。另外,如果这对你们大多数人来说只是基本的,我很抱歉,但我真的很想理解它。

最佳答案

在 ghci 中跟随!

Prelude> let x = read "True"
Prelude> :t x
x :: Read a => a

所以 x 没有具体类型。 x 是一种表达式,可以在我们请求时提供具体类型的值。我们可以要求 x 成为一个 Int 或一个 Bool 或我们想要的任何东西。特别是:

Prelude> x :: Bool
True

我们也可以要求它是一个Int:

Prelude> x :: Int
*** Exception: Prelude.read: no parse

但没能合二为一。

那么在您的代码片段中,我们什么时候要求它成为某种东西?

Prelude> :t (||)
(||) :: Bool -> Bool -> Bool

函数 (||) 需要一个 Bool,所以它要求它的参数变成 Bool。正如我们已经看到的,当我们要求 x 成为一个 Bool 时,它变成了 BoolTrue。所以说:

Prelude> x || False
True

就像在说:

Prelude> True || False
True

(||)代表the logical OR operation ,因此结果为 True

关于haskell - Haskell 中的读取函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36776719/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com