我开始学习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!"
答案 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
是您的分隔符。