単一の整数のリストを1つの大きな整数に変換する単純な関数を定義しようとしています。例えば、[1,5,2,0]それはベース10に私が使用することを行うために1520 を返すリストを与えられた:Haskell:2つの引数を持つ関数を定義しようとするとエラーが発生する
calc_nr [] = 0
calc_nr (a:y) = a * 10^(length y) + (calc_nr y)
を今、私はこれができ、異なる拠点にそれを拡張したいです式の基数10を目的の基底に変更することによって行うことができます。そのために、私は別の議論を取り上げ、bをベース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