【发布时间】:2011-09-26 21:40:14
【问题描述】:
我是 Haskell 初学者,必须定义一系列已知状态,由 Int 和 String / ByteString 组成,类似于 HTTP 状态
我永远不必从状态消息中获取状态代码。但是,我必须获得给定状态代码的状态消息。
我查看了 Network.HTTP.Types,它们为每个可能的状态代码定义了不同的“变量”、“status200”、“status201”等(类似于下面的“FoodTwo.hs”)。
如果我刚刚定义了一个返回状态代码状态消息的函数,那么(性能?)有什么影响,如下面的“FoodOne.hs”所示?
最重要的是,在 C# 或 Java 等语言中,可能会声明一个静态字典,类似于 FoodThree.hs - 我有点怀疑这是 Haskell 方式吗?为什么?
-- FoodOne.hs
statusMessage :: Int -> String
statusMessage 30 = "BBQ ready"
statusMessage 40 = "Beverages served"
statusMessage rest = "Unknown Food Status"
-- FoodTwo.hs
data FoodStatus = FoodStatus {
fstatusCode :: Int,
fstatusMessage :: String
}
status30 = FoodStatus 30 "BBQ ready"
status40 = FoodStatus 40 "Beverages served"
-- FoodThree.hs
statusMessages = [(30,"BBQ ready"),(40,"Beverages served")]
【问题讨论】: