digits :: Int->Int->Int
digits x y
|x`mod`10 == y`mod`10 = count x y
|otherwise = digits (x`div`10) (y`div`10)
count :: Int -> Int -> Int
k = 0 + 1
count x y
|x < 1 = getprize k
|otherwise = digits (x`div`10) (y`div`10)
getprize :: Int -> Int
getprize k
|k == 8 = 1000000
|k == 7 = 100000
|k == 6 = 8000
|k == 5 = 300
|k == 4 = 20
|k == 3 = 5
|k == 2 = 1
|k < 2 = k
|otherwise = 43
私はこのコードをHaskellで書いています。目標は、入力番号x、yの等しい桁数を検索することです。カウンタを設定しようとするとk)getprizeをkで呼び出すことはできません。なぜなら、整数として登録されているからです。カウンタをintに設定すると、何桁の数字が同じであるかを数えることができます。haskellでカウンタを設定してインクリメントする
私は、基本に戻って、他の言語について知っていることをすべて忘れて、haskellを学ぶべきだと思います。この質問は、haskellがどのように動作するかについて、あらゆる点で甚大な混乱を示しています。それは実際にあなたが慣れていたものと実際は異なっています。あなたがここで活用しようとしているパターンは、活発に有害です。 – Carl
あなたは実際には '整数 'にすることを望んでいるのですか、それとも' Int'にしますか? – leftaroundabout
@Carl、それが学習の仕方であれば。どのアイデアを修正する必要があるかを教えてもらいましょう – luqui