私は、リストの中の項目を、リストの中の "book"のような先行する要素に対する相対的な順序で番号付けしようとしています。Haskell:リスト内のアイテムに番号を付ける
myList=["book","book","title","author","title","book","title","book", "author"]
私が持っているしたいと思います:
[book 1, book 2, title 2.1, author 2.1, title 2.2, book 3, title 3.1, book 4, author 4.1]
カウントが新しい「本」満たされた後、「タイトル」と「著者」のための1で再起動します。 私はeazily本の番号を付けることができますが、私は書籍番号に応じて他の項目の番号を付ける方法がわかりません。
ので、私はこのようなリスト内包、内ファスナー結合しようとした:結果がタプルであるかどうかは関係ありません
[(1,"title"),(2,"author"),(3,"title"),(4,"title"),(5,"author")]
:
zip [fst (head (zip[1..][x | x <- myList, x=="book"]))..][x | x <- myList, x=="title" || x=="author"]
しかし、私が得たのですまたはリスト。
本当にありがとうございます。
おかげで、 オマール
ありがとうございました!できます。フォローアップの質問として – omar
。私はタプルのリストをmap(\(a、b、c) - > [a、b、c])[( "book"、1、0)のようなリストのリストに変換しようとしました。]そして、私は次のエラーメッセージが表示されます:(Num [Char])のインスタンスが使用されていません....文字列のタプルだけで変換が正常に動作するため、数値が原因です。どんな考え?おかげで再び – omar
haskellのリストは同種であり、異なるタイプの混合をサポートしていません。 – rubystallion