Haskell版文芸的プログラミング
こちらのイベントに参加してきました第0回 スタートHaskell : ATND
色々もりだくさんで、有意義な時間がすごせたと思っています。
どうもありがとうございました!
そこで出たおもしろい話。
文芸的プログラミング
きいたことありますか?わたしは知らなかった。
文芸的プログラミングではドキュメントとソースを併記したWEBと呼ばれるメタソースを記述し、そこからドキュメントとソースコードをそれぞれ生成させること
____ / \ / ─ ─\ / (●) (●) \ ・・・ | (__人__) | / ∩ノ ⊃ / ( \ / _ノ | | .\ “ /__| | \ /___ /
ドキュメントとソースを同じファイルに書くらしい!
今日学んだことをふまえて、通貨のデータ構造をもっていて、ドル換算してくれるテキトーなサンプルコードを文芸的プログラミングで書いてみた。
通貨のデータ構造 > data Currency = Dollar Float > | Yen Float > | Euro Float ドル換算(レートは2011/07/24のもの) > exchangeDollar :: Currency -> Float > exchangeDollar (Dollar a) = a > exchangeDollar (Yen a) = a * 0.01 > exchangeDollar (Euro a) = a * 1.44
Currency.lhs
実行結果
*Main> let d = Dollar 100 *Main> exchangeDollar d 100.0 *Main> let y = Yen 100 *Main> exchangeDollar y 1.0 *Main> let e = Euro 100 *Main> exchangeDollar e 144.0
ポイントを箇条書き
・コメントをそのまま書いて、ソースコードをコメントアウトしたような見た目
・拡張子は.lhs(もちろんHaskellの場合)
・GHCで普通にコンパイル通る
・>の後はスペースあけないとコンパイルエラー
・ドキュメントとソースは1行あけないとコンパイルエラー
文芸的プログラミングって言葉自体初耳で、利点とか欠点とか正直あまりよくわかりません。
ただおもしろいなって思ったのでご紹介。
Haskellに限ったプログラミング概念ではないと思うので、他の言語にもありそう。