chapter 12 of Real World Haskellを完成させています。この章では、EAN13 encodingでバーコード認識を実行する方法について説明します。EAN13ハスケルのバーコードエンコーディング:それをテストするには?
私はthe book snippets into my repoからのコードの大部分を再現し、私は最終的には期待通りに動作し、私は悪いニュースだコードの私の300行を超えるかどうかを確認するために到着したとき:本が出版されて以来
-- Finding the Correct Sequence
*Main> let input = zip (runLengths $ encodeEAN13 "9780132114677") (cycle [Zero, One])
*Main> listToMaybe . solve . candidateDigits $ input
Just [0,2,0,1,0,0,0,0,0,0,0,0,1] -- WRONG Actual
Just [9,7,8,0,1,3,2,1,1,4,6,7,7] -- Expected
を私は最後の1から除き、GHCiの中のすべての例を再現してみましたと
$ ghci
GHCi, version 7.10.3: http://www.haskell.org/ghc/ :? for help
Prelude> import qualified Data.Map as M
Prelude M> :t M.lookup
M.lookup :: Ord k => k -> M.Map k a -> Maybe a
-- in the book: M.lookup :: (Ord k, Monad m) => k -> M.Map k a -> m a
私はいつもこの本と同じ結果を取得するには、次のような、私はいくつかの型シグネチャが変更されました気づきました。
誰もがこの本からそのトピックをカバーしていますか?
著者は、コードのすべての単一の行を説明されていないと、特に、input
変数がテストのためにどこlet input = zip (runLengths $ encodeEAN13 "9780132114677") (cycle [Zero, One])
一部EAN13符号化されたバーコードが定義されていませんか?機能上の私のテストが正しいことを確認するには
*Main M> encodeEAN13 "9780132114677"
"101011101100010010100111001100101000010101011011001100110110011010111001010000100010010001001010000101"
:
は、誰もこの本を知っていない場合は、あなたがEAN13のいくつかのサンプルを持っているでしょうなどバーコードをエンコード?
は事前あなたの1のシーケンスと0との三つの問題があるように見えます
ありがとうございました!それは完全に働いた – mabe02