我正在完成chapter 12 of Real World Haskell。在本章中,作者解释了如何使用EAN13 encoding执行条形码识别。EAN13 Haskell中的条形码编码:如何测试它?
我转载的大多数代码从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
由于该书出版,我注意到一些类型的签名已更改,如:
$ 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
我试图在GHCI重现每一个例子,除了从最后一个,我总是得到相同的结果书。
有没有人从这本书中涉及这个话题?
作者不说明的每一行代码和,特别地,所述input
变量没有在任何地方let input = zip (runLengths $ encodeEAN13 "9780132114677") (cycle [Zero, One])
用于测试一些EAN13编码条形码定义?
如果没有人知道这本书,你会EAN13的一些样本编码条形码,如:
*Main M> encodeEAN13 "9780132114677"
"101011101100010010100111001100101000010101011011001100110110011010111001010000100010010001001010000101"
为了确保我的功能测试是正确的?
非常感谢你提前
谢谢!它工作完美 – mabe02