関数型プログラミング言語Haskellat TECH
関数型プログラミング言語Haskell - 暇つぶし2ch396:日曜Haskellerオヤジ
02/08/20 15:52
関数型言語の素人のコードなので変かも知れませんが大体こんな感じになります。
本できたら、このスレッドに報告してくださいね、買います。

type Token = String
type Key = String
type Field = String
type Value = String

hoge_key = [ "Name" , "Title" , "Address" ]

hoge_token = [ "Name" , ":" , "Yamada" , "Taroh" , ";" , "Title" , ":" , "Mr" , ";" , "Address" , ":" , "Tokyo" , "Shinjuku" , ";" ]

-- ここが本体
func :: [Key] -> [Token] -> [(Field, Value)]
func k t = receive [] t
  where
    receive xcomplete remain
      | remain == [] = xcomplete             -- 全部完了
      | nokey     = receive xcomplete raw_recs    -- キー無し
      | otherwise   = receive (rec:xcomplete) raw_recs -- 成功
        where
          -- 先頭レコードのその以外のレコードの定義
          ( raw_rec , raw_recs ) = sprit_records remain

          -- キーと ':' と結合前の値のリスト定義
          -- 必要ならコロンのチェックをすること
          ( key : ( colon : value_token ) ) = raw_rec

          -- キーがあるかどうかの定義
          nokey = (has_member k key) == False

          -- 値の定義
          value = cat_value value_token

          -- 整形済みレコード
          rec = ( key , value )




次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch