我想做的事情在ghci
以下,但显然它不允许我这样做:定义在Haskell交互shell功能
charName :: Char -> String
charName 'a' = "Albert"
charName 'b' = "Broseph"
charName 'c' = "Cecil"
我可以做:
let charName 'a' = "Albert"
let charName 'b' = "Broseph"
let charName 'c' = "Cecil"
但仍,因为没有charName :: Char -> String
,它会失败以下内容:
charName 'a'
"*** Exception: <interactive>:38:5-26: Non-exhaustive patterns in function charName
我该如何解决这个问题起诉?
你的'CHARNAME“a''并不在这里工作的原因是由于缺少类型签名不是。相反,你的'charName'的三个定义相互覆盖;在最后,'charName'只被定义为''c'',因为那是最后一次。 – chirlu
@chirlu:我如何在'ghci'中定义一个类型签名? –
@QiangLi在它和函数之间使用分号,或者更好地使用:{方法与链接副本中的方法一样,但实际上,将文件中的定义弹出并加载它们实际上要容易得多,因为它们更易于阅读并在那里编辑。 – AndrewC