我想定義一個簡單的函數,將單個整數的列表變成一個較大的整數。例如,給出的列表[1,5,2,0]它會返回1520 做,在基地10我用:Haskell:試圖用兩個參數定義函數時出錯
calc_nr [] = 0
calc_nr (a:y) = a * 10^(length y) + (calc_nr y)
現在,我想延伸到不同的基礎,它可以通過將表達式中的基數10次冪改變爲期望的基數來完成。爲此,我考慮接受另一個論據b,並以基礎權力取代基礎權力。
但是,當我嘗試這樣做時出現了一些錯誤。寫作:
calc_nr b [] = 0
calc_nr b (a:y) = a * b^(length y) + (calc_nr y)
給我的錯誤:
* Occurs check: cannot construct the infinite type: t ~ [t]
Expected type: [t] -> t
Actual type: t -> [t] -> t
* Relevant bindings include
calc_nr :: [t] -> t (bound at calc_nr.hs:39:1)
我是新來的Haskell,所以也許這是一個相當愚蠢的錯誤,但任何幫助將非常感激!
我真的希望GHC將採取葉出榆木的劇本,並把'可能原因:「fromBaseRep」施加太少arguments'前,中央。 – SwiftsNamesake
@SwiftsNamesake好的,有時來自GHC的建議是一個紅色的鯡魚,所以GHC首選首先提到某個問題,然後跟隨一個可能的原因。 – chi
確實。另外,我有幾次看到函數foo的「可能原因」被應用於2個參數,但其類型只有3個。 – leftaroundabout