gpt4 book ai didi

Haskell:类型与模式匹配

转载 作者:行者123 更新时间:2023-12-02 16:48:18 25 4
gpt4 key购买 nike

我是一名本科二年级学生,刚刚开始学习 Haskell。我的问题是关于类型处理与模式匹配。我定义了一个类型 Car,其中包含不同的参数和规范(如果汽车的变速箱是棒式变速箱或自动变速箱),如下所示:

data Car = Stick [Char] Integer | Automatic [Char] Integer

到目前为止,该解决方案对于模式匹配汽车非常有效,但现在我需要一个将汽车作为输入并返回操纵杆/自动信息的函数,并且不想更改操纵杆/自动处理到字符串处理。我不知道为该函数指定什么返回类型。该返回类型是什么?

最佳答案

您可以为传输类型引入一种新类型:

data TransmissionType = Stick | Automatic

并将汽车的定义更改为:

data Car = Car TransmissionType [Char] Integer

然后您可以添加一个函数来获取类型

transmissionType :: Car -> TransmissionType
transmissionType (Car t _ _) = t

由于您只有一个构造函数,因此您可以使用记录来代替:

data Car = Car {
transmissionType :: TransmissionType,
field1 :: [Char],
field2 :: Integer
}

如果您不想更改定义,您可以添加一个函数

isManual :: Car -> Bool
isManual (Stick _ _) = True
isManual (Automatic _ _) = False

关于Haskell:类型与模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19890661/

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