# はじめての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を返す