对不起有点笼统的问题。我是Haskell的新手,而且我是那种通过潜入问题并在我进行中弄清楚所需的部分而学习的人。所以,我已经开始开发一个旨在进行简单线性回归的Haskell模块。这是我的目录设置:
mymod/
- mymod.cabal
- src/
-- MyMod/
--- Linear.hs
--- Linear/
---- Regression.hs
--- Data.hs
--- Data/
---- Examples.hs
- tst/
我的cabal文件如下所示:
library
exposed-modules: MyLib.Linear, MyLib.Linear.Classifier,
MyLib.Data, MyLib.Data.Examples
build-depends: base == 4.6.*
hs-source-dirs: src
现在,我正在写作 Examples
模块,本质上是一个CSV文件解析器。看起来像这样:
module Exampels (load) where
import Text.ParserCombinators.Parsec
import Control.Applicative
examples = line `endBy` eol
line = cell `sepBy` (char ',')
cell :: GenParser Char st Double
cell = rd <$> many1 (noneOf ",\n")
where rd = read :: String -> Double
eol = char '\n'
load :: String -> Either ParseError [[Double]]
load input = parse examples "(unknown)" input
这是我写的第一部系统。我通过使用测试了这个 ghci
和 :l Examples.hs
从 mylib/src/MyLib/Data/
其次是 load "5\n"
并验证了结果。现在我想开始编写回归逻辑,但我想结合我已编写的CSV解析器来测试这段代码。人们通常会如何测试这样的代码?
例如,在Java中,我通常会创建一个新的包,其中包含一个包含main方法的类。使用Java,这对我来说很简单,因为我理解了类路径是如何工作的,并且可以指示编译器查找我想要运行的类。我如何在Haskell中执行此操作?
谢谢!