Data.List.Split はリストを分割するためのライブラリです。
- インストール は cabal install split で OK。
> cabal install split Resolving dependencies... Downloading split-0.1.2... Configuring split-0.1.2... (snip) Reading package info from "dist\\installed-pkg-config" ... done. Writing new package config file... done.
- 使ってみる。
Prelude> :m + Data.List.Split -- 文字列で分割 > splitOn "x" "axbxc" --=> ["a","b","c"] > splitOn "x" "axbxcx" --=> ["a","b","c",""] > splitOn ".." "a..b...c....d.." --=> ["a","b",".c","","d",""] -- 終端文字列で分割 > endBy ";" "foo;bar;baz;" --=> ["foo","bar","baz"] -- 条件式で分割 > splitWhen (<0) [1,3,-4,5,7,-9,0,2] --=> [[1,3],[5,7],[0,2]] > splitWhen (<'b') "sirocco_jp" --=> ["sirocco","jp"] -- 複数の分割条件 > splitOneOf ";.," "foo,bar;baz.glurk"["foo","bar","baz","glurk"] -- 固定長分割 > splitEvery 3 ['a'..'z'] -==> ["abc","def","ghi","jkl","mno","pqr","stu","vwx","yz"] -- chunk は splitEvery の別名(synonym)です。 > chunk 5 ['a'..'z'] -==> ["abcde","fghij","klmno","pqrst","uvwxy","z"] -- 長さを指定して分割 > splitPlaces [2,3,4] [1..20] --=> [[1,2],[3,4,5],[6,7,8,9]] > splitPlaces [1,2,3,4,5,6] ['a'..'z'] --=> ["a","bc","def","ghij","klmno","pqrstu"] > wordsBy (=='x') "dogxxxcatxbirdxx" ["dog","cat","bird"]
split-0.1.2: Combinator library for splitting lists.: 他にも分割方法あります。