top page > computer > haskell > web_lecture > for_programmer > nml3.html
更新日:
文責: 重城良国

NML(Nano Markup Language): 3. 他の型からの変換

Books.hs

はじめに

[Book]型をNml型にエンコードする。

スタブ

関数fromBooklistのスタブを作っておく。

fromBooklist :: [Book] -> String
fromBooklist = undefined

関数fromBooklistはNmlから文字列への変換関数をモジュールNmlに作成したあとに定義する。

関数fromBook

Book型の値をNml型の値、つまりTree String型の値に変換する。

fromBook :: Book -> Nml
fromBook b = Node "book" [
Node "title" [Node (title b) []],
Node "author" [Node (author b) []] ]

関数fromBooklistNml

fromBooklist :: [Book] -> Nml
fromBooklistNml = Node "books" . map fromBook

まとめ

デコードにくらべてエンコードは簡単だ。もとになる値はエンコード後の値よりも構造がはっきりしている。エンコードされると値の構造はよりフラットになる。Books型の値からNml型へそしてString型へとエンコードしていくが、String型の値はフラットな文字のリストだ。

「NML(2): 他の型への変換」へもどる 「NML(4): 表示」へ

正当なCSSです! HTML5 Powered with CSS3 / styling, and Semantics