gpt4 book ai didi

Haskell 异常 : Prelude. Enum.().toEnum:错误的参数

转载 作者:行者123 更新时间:2023-12-02 17:21:34 25 4
gpt4 key购买 nike

我有以下代码

import Data.List

data Card = One
| Two
| Three
| Four
| Five
| Six
| Seven
| Eight
| Nine
| Ten
| J
| Q
| K
| A
deriving (Show, Eq, Ord, Enum)

data Hand = Hand Card Card Card Card Card deriving(Show)

largestCard :: Hand -> Card
largestCard (Hand a b c d e) = One

但是,当我尝试在 GHCi 中使用 toEnum 3 时,我得到 Exception: Prelude.Enum.().toEnum: bad argument。如何解决这个问题?

最后一个函数只是一个虚拟函数。现在它什么也没做。

最佳答案

toEnum 的类型是

toEnum :: Enum a => Int -> a

GHCi 没有上下文来确定您想要在 toEnum 3 中使用哪个 Enum 实例,因此 by default它提供类型()。该类型只有一个值 (),因此除 0 之外的任何值都将无效。

以下是在 GHCi 中调用 toEnum 的一些示例:

λ> toEnum 0
()
λ> toEnum 1 :: Bool
True
λ> toEnum 3 :: Card
Four

您还可以使用type applications :

λ> :set -XTypeApplications
λ> toEnum @Bool 1
True
λ> toEnum @Card 3
Four

关于Haskell 异常 : Prelude. Enum.().toEnum:错误的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58906601/

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