文字列番号の最後の数字とは別にhaskellに関する質問があります。たとえば、入力は(1234)、出力は(123,4) 私はプログラミングを行っていますが、動作しません。ハスケル最後の数字を文字列番号から分ける方法について
toDigits :: Int -> [Int]
toDigits n
| n <= 0 = []
| otherwise = toDigits(n `mod` 10) ++ [n `div` 10]
文字列番号の最後の数字とは別にhaskellに関する質問があります。たとえば、入力は(1234)、出力は(123,4) 私はプログラミングを行っていますが、動作しません。ハスケル最後の数字を文字列番号から分ける方法について
toDigits :: Int -> [Int]
toDigits n
| n <= 0 = []
| otherwise = toDigits(n `mod` 10) ++ [n `div` 10]
あなただけdiv
とmod
スワップを持っています。
toDigits n | n <= 0 = []
| otherwise = toDigits (n `div` 10) ++ [n `mod` 10]
彼の機能は修正されましたが、彼のリクエストは 'f :: Int - >(Int、Int)'、おそらく 'f x =(x \' div \ '10、x \' mod \ '10)'を求めているようでした。 –
おそらく、それは本当に退屈な質問ですが、 'f x = divMod x 10'です。 – chepner
私たちが書いたコードはしばしば、最初の試行では動作しません(またはコンパイル)。 ghciの短いコードをテストし(そして ':t'で型を尋ねる)、関数の実行をペンと紙でトレースし、' -Wall'でコンパイルしてください。あなたの場合は、私はペンと紙のアプローチをお勧めします。また、おそらく 'toDigits :: Int - > Maybe(Int、Int)' – jberryman
が必要です。再帰/終了が壊れているので、アルゴリズムをもう一度考え直してください。例えば、数字「1」を取る。 'mod 1 10 == 1'なので、決してゼロにならないので、あなたは無限に' toDigits'を呼び出します。 –
@jberrymanどうして 'Int - >(Int、Int)'ではないのですか?私は、このアルゴリズムが与えられれば 'Nothing'にマップされる' Int'値を描くことはできません。 – chepner