Haskell中的類型問題。 我嘗試從Prolog移動到Haskel。 我必須從字符串表示中計算算術表達式。我在Haskel上編寫了與Prolog程序相匹配的遞歸算法。原因Haskel要求列表中的所有元素必須是一種類型,不可能像Prolog中那樣混合操作符號和數字,所以我使用[String]類型來表示算術表達式。爲了執行計算,必須將數字的符號表示轉換爲整型,但將結果類型推斷爲浮點型。每個操作的結果必須反向轉換爲字符串,因爲它是字符串元素的類型。Haskell編譯器(HUGS 98)阻止我的程序。 我的錯誤是什麼? 。Haskell中的函數類型
cc :: (String b) => [String] -> b
cc (a:"*":b:t) = cc(c:t)
where c=show(read a * read b)
cc (a:"/":b:t) = cc(c1:t)
where c1=show(read a/read b)
cc (a:"-":t) = show(read a - read(cc t))
cc (a:"+":t) = show(read a + read (cc t))
cc (a:[]) = a
cc [] = 0
錯誤文件:\ e3.hs:18 - 未定義類「字符串」
字符串確實不是一個類。你想用'(String b)=> [String] - > b'表達什麼? –
請記住,在'a:'+':b:t'中,a和b都是單個字符,所以在計算10 + 12時會遇到一些困難。 –
@ n.m。 ...這不會是一個問題,因爲它不是「+」而是「+」';) – Carsten