[devel][haskell] はじめてのH
askellのプログラム。
モナドなにそれ状態。
「やさしい Haskell 入門」は正直な話、根本的に意味が判らない状態。
意味不明のエラーに悩まされつつ、迷宮に入り込んでアドホックなことを繰り返した結果。
今後のために敢て恥を晒してみる。
処理系はThe Haskell PlatformDownload Haskell
参考にしたのは以下のサイト。
- Haskell入門 5ステップ - HaskellWiki
- 10分で学ぶHaskell - HaskellWiki
- プログラミング/Haskell/入門 - Flightless wing
- Haskell 入門 - ウォークスルー Haskell
- THE HITCHHIKER'S GUIDE TO THE HASKELL 「HASKELL の歩き方」
「やさしい Haskell 入門」で挫折して、だいたいこの順で読んだ。
その後、"Haskell で UNIX コマンドを書こうシリーズ"(Haskell)のソースをいくつか読んだ。
型クラスはjavaのinterfaceかc++の抽象基底クラス。
dataは、列挙型か抽象データ型。
モナドはまったく判らないけど、なんか高度な制御に使われる、なんかタグの付いたデータか、カプセル化されたデータで、専用の関数を使ったり、割って取り出したりしないといけない。
とりあえず避けておきたいけど、schemeの継続と違ってこっちはある程度扱えないとデスクトップで使えるプログラムは書けないっぽい。
構築子ってなんだよって思ったら、コンストラクタか。
ループは全て再帰。変数値の破壊操作は完全にないので状態的なものは再帰の仮引数で。
だいたいこんな認識。
判らない キーワードはHoogleでフグる?
emacsのmelpaで入るhaskell-modeとかghc-mod(ghc)で、hlintを掛けると、文法チェックというより若干リファクタリング的なサジェスチョンをくれるのに驚いた。
あと参考資料的に
- How to work on lists - HaskellWiki
- Cookbook - HaskellWiki
- IO入門編 - HaskellWiki
- A Gentle Introduction to Haskell, Version 98
- M.Hiroi's Home Page / Haskell Programming
- Haskell のお勉強
冒頭のプログラムは、windowsのiniファイルのような形式の設定ファイルの若干のフォーマット変更。
[nameA] optX=valXA optY=valYA [nameB] optX=valXB optY=valYB
という形のものを
optX1=TvalXA optY1=valYA optX2=KvalXB optY2=valYB
こんな感じに変更するもの。
pythonのConfigParser的なもののhasukell版がData.ConfigFileで、これを使って読み込んで、あとは書くだけのはずが。
"caval install Data.ConfigFile"とかする。