2015-09-25 40 views
0

輸入工作列表時添加逗號哈斯克爾:</p> <p>我的代碼,使的輸出:打印整數

abc 2 
am 1 2 
and 2 
do 2 
i 1 2 
like 2 
not 2 
spam 2 
what 1 

每個單詞與它出現的行號上市上。

問:你如何打印下面,你的行號之間獲得逗號,像這樣的語句:

abc 2 
am 1,2 
and 2 
do 2 
i 1,2 
like 2 
not 2 
spam 2 
what 1 

下面是代碼我有需要採用這樣的格式

元組列表[([1, 2], "a"), ([1], "b"), ([1], "c"), ([2], "dd")]

,並打印到我的電流輸出,我上面列出:

combineInts listTuple = map f $ groupBy ((==) `on` fst) $ sortBy (compare `on` fst) $ map swap listTuple 
    where f [email protected](x:_) = (map snd xs, fst x) 

printListTuples listTuple = unlines [ ys ++ " " ++ unwords (map show x) | (x, ys) <- listTuple ] 

如果我能得到幫助,弄清楚如何在行號之間得到這些逗號,它會很有用,並且更具可讀性。

+2

是你寫的代碼嗎? –

回答

2

有一個簡單的方法,並且有一個困難的方法。簡單的方法是使用Show實例列表和幾個非常簡單的列表函數。另一個非常簡單的方法是隻使用一個列表函數。你看怎麼樣?更難的是更多的教育)方式是自己寫。你可以拿出基地案件和遞歸案件?

+0

在'printListTuples'中使用'show'來完成你告訴我的一些事情(我的理解至少),但是我不確定用什麼函數來插入逗號。 – sanic

+0

@ shamu11,我想到了一個更好的方法。請記住,字符串是列表,並閱讀Hackage上'Data.List'的文檔。你會找到完美的滿足你的需求的東西。 – dfeuer