我想根据它们相对于前一个元素的顺序来编号列表中的项目,如下面列表中的“book”。Haskell:在列表中编号的项目
myList=["book","book","title","author","title","book","title","book", "author"]
我想有:为“标题”和新的“书”后“作家”,在1
[book 1, book 2, title 2.1, author 2.1, title 2.2, book 3, title 3.1, book 4, author 4.1]
将重新开始计数得到满足。 我可以编号的书,但我不知道如何编号取决于书号的其他项目。
,所以我想一个压缩列表中的理解结合起来,就像这样:
zip [fst (head (zip[1..][x | x <- myList, x=="book"]))..][x | x <- myList, x=="title" || x=="author"]
,但我得到的是:
[(1,"title"),(2,"author"),(3,"title"),(4,"title"),(5,"author")]
如果结果是一个元组不要紧或一个列表。
我真的很感谢你的帮助。
感谢, 奥马尔
谢谢!有用。 – omar
作为跟进问题。我尝试将元组列表转换为像这样的列表列表:map(\(a,b,c) - > [a,b,c])[(“book”,1,0)....]我得到以下错误消息:没有实例(Num [Char])由于使用....引起的问题,因为只有字符串的元组,转换工作正常。任何想法为什么?再次感谢 – omar
haskell中的列表是同质的,不支持不同类型的混合。 – rubystallion