0
|
1 # はじめてのHaskell
|
|
2
|
|
3 HaskellをやるためにはまずHaskellコンパイラを導入します。
|
|
4 最も広く使われているものは、The Glasgow Haskell Compiler (GHC) です。
|
|
5 導入の方法は色々ありますが、手っ取り早く必要なものを揃えるには、''Haskell Platform'' をダウンロードするのがベストです。
|
|
6 Haskell Platform には GHC コンパイラだけでなく、便利なHaskellのライブラリのセットも同梱されています。
|
|
7 Haskell Platform を手に入れるには、http://hackage.haskell.org/platform/ に行って、利用している OS 向けの指示に従ってください
|
|
8
|
|
9 ## GHC の構成
|
|
10 - ghc
|
|
11 - 速いネイティブコードを生成する最適化コンパイラ
|
|
12 - ghci
|
|
13 - 対話型インタプリタとデバッガ
|
|
14 - runghc
|
|
15 - コンパイルせずにHaskellプログラムをスクリプトとして走らせるプログラム
|
|
16
|
|
17 # Jungle-haskell
|
|
18 非破壊木構造を扱うHaskell module
|
|
19
|
|
20 ## 実際に使ってみよう
|
|
21 研究室のリポジトリからソースを持ってくる
|
|
22 ```
|
|
23 $ hg clone ssh://one@firefly.cr.ie.u-ryukyu.ac.jp/hg/Members/toma/Jungle-haskell/
|
|
24 ```
|
|
25
|
|
26 Main.hsという、実際にmoduleをimportして利用しているプログラムがあるので参考にする
|
|
27
|
|
28 ## 利用できる型や関数など
|
|
29 ### 型
|
|
30 - Jungle
|
|
31 - 木とStringを組にして保持するデータ型
|
|
32
|
|
33 - Tree
|
|
34 - RootNodeを保持しているデータ型
|
|
35
|
|
36 - Node
|
|
37 - childrenとattributesを持つデータ型
|
|
38 - childrenとして、他のNodeを持つことができる
|
|
39
|
|
40 - Children
|
|
41 - IntとNodeを組にして保持するデータ型
|
|
42
|
|
43 - Attributes
|
|
44 - StringとByteStringを組にして保持するデータ型
|
|
45
|
|
46 ### 関数
|
|
47 - createJungle
|
|
48 - 空のJungleを作成する
|
|
49
|
|
50 - createTree
|
|
51 - Jungleと木の名前を渡すと、その名前の空の木を含んだJungleを返す
|
|
52
|
|
53 - getTreeByName
|
|
54 - Jungleと木の名前を渡すと、木を返す
|
|
55 - 木の名前が存在しない場合でも、空の木を返す
|
|
56
|
|
57 - getRootNode
|
|
58 - Treeから、RootNodeを得ることができる
|
|
59
|
|
60 - getChildren
|
|
61 - NodeからChildrenを得る
|
|
62
|
|
63 - getAttributes
|
|
64 - NodeからAttributesを得る
|
|
65
|
|
66 - at
|
|
67 - ChildrenとIntを渡すとNodeを得られる
|
|
68 - 存在しない場合でも、空のNodeを返す
|
|
69
|
|
70 - get
|
|
71 - AttributesとStringを渡すと、ByteStringが得られる
|
|
72 - 存在しない場合でも、空のByteStringが得られる
|
|
73
|
|
74 - addNewChildAt
|
|
75 - Treeと、子を追加したいNodeのPath、子を追加したい場所、追加したいNodeを渡すと、追加したTreeを返す
|
|
76
|
|
77 - deleteChildAt
|
|
78 - Treeと、子を削除したいNodeのPath、削除したい子の場所を渡すと、削除したTreeを返す
|
|
79
|
|
80 - putAttribute
|
|
81 - Treeと、Attributeを追加したいNodeのPath、Attributeに関連付けたいString、追加したいByteStringを渡すと、追加したTreeを返す
|
|
82
|
|
83 - deleteAttribute
|
|
84 - Treeと、Attributeを削除したいNodeのPath、Attributeに関連付けたStringを渡すと、削除したTreeを返す
|