私はこのタイプのリストを扱っています:
data Elem = Dot | Star
最初のリストはリスト内の「スター」のシーケンスの長さを示し、2番目のリストはこのシーケンスが表示される場所を示します(最初の位置は1です)。おそらく組み込み関数を使用せずに。
機能は次のとおりです。
occ :: [Elem] -> [(Int, [Int])]
編集:私の考えは、問題を2つの機能に分割することです。1つはすべての「星」の位置を見つけるためのもので、もう1つは場所をリストするためのものです。
EDIT2: 例:
occ [Dot,Star,Dot,Star,Dot,Star,Star,Star]
[(1,[2,4]), (3,[6])]
EDIT3: http://pastebin.com/uvvXBARL