
I'm working on a cli program where I'd like to take input from a file or stdin. I've managed to get my program to work but thought my dispatch mechanism could be simplified. I use a scheme along the lines of f in the following minimal example, which compiles. However, if I try to use f' or f'', I get parse errors. Three questions: * Is there a better way of doing this * Are stylistic changes to f really called for? * How can/ought I correct my syntax errors? Many thanks, vale
module MinimalExample where import System.IO (getContents)
f :: String -> IO () f "-" = do s <- getContents putStrLn s f file = do s <- readFile file putStrLn s
-- f' :: String -> IO () -- f' file = do -- if file == "-" -- then s <- getContents -- else s <- readFile file -- putStrLn s
-- f'' :: String -> IO () -- f'' file = do -- case file of -- "-" -> s <- getContents -- _ -> s <- readFile file -- putStrLn s
-- vale cofer-shabica vale.cofershabica@gmail.com