Data.List 1にコンマ区切りのデータをリストで取り出す関数がなかったので作ってみた。実行例は次のようになる。
Prelude> :l "splitby.hs" [1 of 1] Compiling Main ( splitby.hs, interpreted ) Ok, modules loaded: Main. *Main Prelude> splitBy ',' "apple,orange,banana" ["apple","orange","banana"] *Main Prelude> splitBy ',' "apple" ["apple"] *Main Prelude> splitBy ',' "" [] プログラムは次のようになる。Prelude の関数 break を利用しているので他のモジュールをインポートする必要がない。 ファイル名 : splitby.hs splitBy s [] = [] splitBy s xs = let brk = break (== s) xs first = fst brk rest = snd brk in if rest == "" then [first] else first : splitBy s (tail rest) splitBy の反対にリストのデータからコンマ区切りの文字列に変換する関数 separateBy は、Data.List モジュールの intersperse 関数を使って次のように定義できる。 Prelude Data.List> :m Prelude Prelude> :m Data.List Prelude Data.List> let separateBy s xs = concat $ intersperse [s] xs Prelude Data.List> separateBy ',' ["apple","orange","banana"] "apple,orange,banana" これでコンマ区切りのデータのデコーディングとエンコーディングが簡単にできる。しかし、Haskell には words, unwords のようなスペースがセパレータの場合の標準関数があるので、データの保存と読み込みを簡単に行うには、普通はこれを利用したほうがいいだろう。
by tnomura9
| 2013-01-10 01:08
| Haskell
|
Comments(0)
|
カテゴリ
新型コロナウイルス 主インデックス Haskell 記事リスト 圏論記事リスト 考えるということのリスト 考えるということ ラッセルのパラドックス Haskell Prelude Ocaml ボーカロイド 圏論 jQuery デモ HTML Python ツールボックス XAMPP Ruby ubuntu WordPress 脳の話 話のネタ リンク 幸福論 キリスト教 心の話 メモ 電子カルテ Dojo JavaScript C# NetWalker ed と sed HTML Raspberry Pi C 言語 命題論理 以前の記事
最新のトラックバック
最新のコメント
ファン
記事ランキング
ブログジャンル
画像一覧
|
ファン申請 |
||