我想做的事情在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