我试图创建一个名为place的新数据声明。在Haskell的case语句中使用默认值
它看起来像这样:
data place = United States | France | England | Germany | Mexico | Canada
我的希望是,然后使用一个名为帽功能采取的地方,它的资本,像这样:
cap :: place -> String
cap a = case a of
Spain -> "Madrid"
France -> "Paris"
England -> "London"
Germany -> "Berlin"
Mexico -> "Mexico City"
Canada -> "Ottawa"
_ -> undefined
但是最后的情况下,我试图捕获数据声明中可能不存在的所有其他条目不起作用。例如,如果我在GHCI中输入capital Wales
,我不会收到未定义的答复。相反,我得到一个不在范围内的错误。有人可以帮我解决我的困惑,也许可以提供一种尝试捕捉其他情况的合法方式吗?
暂时将另一个国家添加到您的代码中'data Place = Temp |美国| ...'那么你可以测试'帽子温度'。 – AndrewC 2013-02-12 23:19:59
(您的数据声明现在已被打破,应该说'data Place = UnitedStates | France | England | Germany | Mexico | Canada'。) – AndrewC 2013-02-12 23:22:15