Haskell:在打印整数列表时添加逗号

时间:2015-09-25 23:33:12

标签: list function haskell printing tuples

输入为:

"I am what I
am, and I (765) do not like Spam. Abc2. Abc3."

我的代码输出:

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 xs@(x:_) = (map snd xs, fst x)

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

如果我能帮助找出如何在行号之间插入这些逗号,那么它将更有用并且更具可读性。

1 个答案:

答案 0 :(得分:2)

这是一种简单的方法,而且很难。简单的方法是使用Show实例列表和一些非常简单的列表函数。另一个非常简单的方法是只使用一个列表函数。你怎么看?更难一点的教育方式是自己写。你能想出基本的案例和递归案例吗?