在haskell中使用多个参数解析mapM_的函数

时间:2014-04-29 04:20:04

标签: haskell

我开始学习Haskell并且想知道,如何将列表中的元素打印成具有已定义空格字符的单个连接字符串。我在下面的脚本中实现了这一点。

但是我希望编写putStrSep函数,以便我可以将分隔符指定为参数。而不是在下面的例子中硬编码。

#/usr/bin/env runghc 
import System.Environment   --for the getArgs function

-- Concatenate my own string
putStrSep :: String -> IO()
putStrSep x = putStr (x ++ " ")


--Prints the list of arguments
main = do 
 putStrLn "Usage: helloworld.hs your full name"
 args <- getArgs    --returns you a list of string
 putStr "Your name is: "
 mapM_ putStrSp args
 putStrLn "\nGood bye!"

1 个答案:

答案 0 :(得分:4)

您可以像这样实施putStrSep

putStrSep :: Char -> String -> IO ()
putStrSep sep str = putStr (str ++ [sep])

注意:您的mapM_ ...需要替换为mapM_ (putStrSep '\t') args

之类的内容

或者您可以使用intercalate(来自Data.List),并将mapM_ ...替换为

putStrLn $ intercalate " " args

putStrLn $ intercalate [sep] args

sep是您的分隔符。