EDIT: Я не должен кодироваться, когда это устало. Я составлял другую копию программы, чем я запускал. Извините за то, что потратил ваше время.Образец Соответствие списку Haskell с переменным размером
У меня есть следующий код, чтобы сделать один аргумент необязательным при запуске моей программы.
main = do
args <- getArgs
handleArgs args
handleArgs :: [String] -> IO()
handleArgs (server:nick:channel:[]) = IRC.startIRC server 6667 nick channel
handleArgs (server:port:nick:channel:[]) = IRC.startIRC server (read port :: Int) nick channel
handleArgs _ = putStrLn "Incorrect arguments given."
Если я запустил его как ./program irc.freenode.net 6667 somenick #somechannel
, он работает. Однако, если я запустил его как ./program irc.freenode.net somenick #somechannel
, который должен сделать args списком "irc.freenode.net":"somenick":"#somechannel":[]
, если я его правильно пойму, он дает ошибку соответствия шаблона, указывающую на строку args <- getArgs
, когда я пытаюсь запустить ее после компиляции с помощью ghc.
Точнее, ошибка: mbot: user error (Pattern match failure in do expression at core.hs:9:4-32)
Как быстрая ссылка: эту функцию 'main' можно было бы лучше написать как' getArgs >> = handleArgs'. – Chuck