はじめてのHaskell †
HaskellをやるためにはまずHaskellコンパイラを導入します。
最も広く使われているものは、The Glasgow Haskell Compiler (GHC) です。
導入の方法は色々ありますが、手っ取り早く必要なものを揃えるには、Haskell Platform をダウンロードするのがベストです。
Haskell Platform には GHC コンパイラだけでなく、便利なHaskellのライブラリのセットも同梱されています。
Haskell Platform を手に入れるには、http://hackage.haskell.org/platform/ に行って、利用している OS 向けの指示に従ってください
GHC の構成 †
- ghc
- 速いネイティブコードを生成する最適化コンパイラ
- ghci
- 対話型インタプリタとデバッガ
- runghc
- コンパイルせずにHaskellプログラムをスクリプトとして走らせるプログラム
Jungle-haskell †
非破壊木構造を扱うHaskell module
実際に使ってみよう †
研究室のリポジトリからソースを持ってくる
$ hg clone ssh://one@firefly.cr.ie.u-ryukyu.ac.jp/hg/Members/toma/Jungle-haskell/
Main.hsという、実際にmoduleをimportして利用しているプログラムがあるので参考にする
利用できる型や関数など †
- Jungle
- 木とStringを組にして保持するデータ型
- Tree
- RootNode?を保持しているデータ型
- Node
- childrenとattributesを持つデータ型
childrenとして、他のNodeを持つことができる
- Children
- IntとNodeを組にして保持するデータ型
- Attributes
- StringとByteString?を組にして保持するデータ型
関数 †
- createJungle
- 空のJungleを作成する
- createTree
- Jungleと木の名前を渡すと、その名前の空の木を含んだJungleを返す
- getTreeByName?
- Jungleと木の名前を渡すと、木を返す
木の名前が存在しない場合でも、空の木を返す
- getRootNode?
- Treeから、RootNode?を得ることができる
- getChildren
- NodeからChildrenを得る
- getAttributes
- NodeからAttributesを得る
- at
- ChildrenとIntを渡すとNodeを得られる
存在しない場合でも、空のNodeを返す
- get
- AttributesとStringを渡すと、ByteString?が得られる
存在しない場合でも、空のByteString?が得られる
- addNewChildAt?
- Treeと、子を追加したいNodeのPath、子を追加したい場所、追加したいNodeを渡すと、追加したTreeを返す
- deleteChildAt?
- Treeと、子を削除したいNodeのPath、削除したい子の場所を渡すと、削除したTreeを返す
- putAttribute
- Treeと、Attributeを追加したいNodeのPath、Attributeに関連付けたいString、追加したいByteString?を渡すと、追加したTreeを返す
- deleteAttribute
- Treeと、Attributeを削除したいNodeのPath、Attributeに関連付けたStringを渡すと、削除したTreeを返す