末尾再帰を使用して 16 進数を整数に変更する方法を探しています。これまでのところ、通常のプリミティブ再帰のひどい実装を試しただけで、それに近づくことさえできませんでした。とてもイライラします。末尾再帰の例も役に立ち、非常に高く評価されます。この実装については十分に理解していません。
例:
"005" -> 5
"1E" -> 30
制限事項: インポートを使用できないか、可能であれば再帰または末尾再帰を使用して if、then、else などを実行する必要があります。
私の再帰の試み。
hexToInteger :: String -> Integer
|(x:xs) = [] = []
|x == 0 = hexToInteger xs
|otherwise = addition x + hexToInteger xs
addition :: String -> Integer
addition x
|--something to check what position we're dealing with and what hex value.
|--Return the Integer value