haskell-jp / beginners #20 at 2022-04-06 00:16:08 +0900

data Element x = Group [x] | Individual x

groupMached ::  x => (x -> Bool) -> [x] -> [Element x]
groupMached function list =  ????

groupMached odd [1,4,5,1,3]  -- 結果 [Group [1], Individual 4, Group [5,1,3]]

リストの要素の中でfunctionによってTrueになり,隣接している者同士でグループを作る関数を定義しようとしています.なかなか思いつきません.ご教示いただけると嬉しいです.
全く同じではないですが、似たようなことをしているであろう groupBy 関数が参考になると思います。
https://hackage.haskell.org/package/base-4.16.1.0/docs/Data-List.html#v:groupBy
リンク先の右端にある「Source」ボタンをクリックするとソースコードが見えます。
ありがとうございます!どう表現したらいいのかわからない部分がちょうど実装されていました.