Извините за несколько общий вопрос. Я новичок в Haskell, и я - тип человека, который учится, погружаясь в проблему и выясняя нужные предметы, когда я иду. Итак, я начал разрабатывать модуль Haskell, целью которого является простая линейная регрессия. Вот моя настройка каталога:
mymod/
- mymod.cabal
- src/
-- MyMod/
--- Linear.hs
--- Linear/
---- Regression.hs
--- Data.hs
--- Data/
---- Examples.hs
- tst/
Мой файл кэша выглядит следующим образом:
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 я обычно создавал новый пакет с классом, в котором есть основной метод. С Java это прямо для меня, потому что я понимаю, как работает classpath, и может направить компилятор для поиска моих классов, которые я хочу запустить. Как это сделать в Haskell?
Спасибо!