haskell - 如何访问自定义类型元素列表中的数据?
问题描述
有一个Ticket
具有四个属性的数据类型,然后我创建Trip
了一个Ticket
s 列表。我想通过检查任何连续票的第一张票的目的地城市是否与第二张票的出发地相同来检查一次旅行是否有效。
data Ticket = Ticket {
typeBilhete :: String
, typeClass :: String
, cityOrin :: String
, cityDestination :: String
} deriving (Show)
data Trip = Trip [Ticket]
validTrip :: [Bilhete] -> Bool
validTrip b =
if head b == "Recife" = then True
else False
我的问题是如何访问cityOrigin
和cityDestination
?所以我可以在validTrip
func中进行比较。
解决方案
空列表或单例列表显然是有效的:
validTrip :: [Ticket] -> Bool
validTrip [] = True
validTrip [_] = True
有两张或多张票,如果第一张和第二张票“适合”,则该行程有效,其余列表也有效。
validTrip (x:y:rest) = cityDestination x == cityOrin y && validTrip (y:rest)
cityDestination
并且cityOrin
都是 type 的简单函数Ticket -> String
。
推荐阅读
- ios - 本地领域迁移不起作用 Swift
- google-ads-api - Google AdWords 问题:DEVELOPER_TOKEN_NOT_APPROVED
- r - 用 gsub 替换除某些字符串以外的字符
- javascript - java和javascript之间用于用户名验证的正则表达式区别
- python - 带有 Numpy 数组的 Python 中的 IndexError
- typescript - 为什么在 Typescript 中可以通过名称访问 .then() 中的数组元素?
- android - Android Systrace 工具抛出错误
- algorithm - 增加数量的完整性比较
- angular - Angular 6 路由转换不会从 Edge/IE 的视图中删除以前的路由
- amazon-web-services - AWS Fargate 连接到不同 VPC 中的 RDS