Знаменитые «Learn You Haskell Для Блага» книга содержит пример аргументов командной строки парсинга:тест сопоставление с образцом в Haskell
dispatch :: String -> [String] -> IO()
dispatch "add" = add
dispatch "view" = view
dispatch "remove" = remove
main = do
(command:argList) <- getArgs
dispatch command argList
До сопоставление с образцом не является простым, нет никакого смысла в тестировании, но вещи быстро становятся все более сложными:
main :: IO()
main = getArgs >>= dispatch
dispatch :: [String] -> IO()
dispatch ("add":args) = add args >> list
dispatch ("remove":args) = remove args >> list
dispatch ("view":[]) = list
dispatch [] = list
dispatch _ = usage
Теперь идея появляется, чтобы проверить, если каждый отдельный вход образец вызывает правильную ветвь шаблонов соответствия. Если отправка должна была что-то вернуть, это не проблема, но, к сожалению, это не так. Мои мысли:
- Я чувствую отправка должна возвращать «действие», но соответствие еще раз действие кажется глупо :)
- Может быть картина синхронизм неправильно здесь, хотя это выглядит как хороший тест случае.
- Может быть кодом должны быть переработано, чтобы сделать возвращение диспетчерского что-то, и это единственным способом
- Что-то другое
Я хотел бы иметь подсказку, какие предположения верны, и каков не.
Заранее благодарен!
Дон «Не понимаю, в чем проблема: ( – yihuang