関数型言語Haskell n ホームページ http: //www. haskell. org/ n システムHugs http: //haskell. cs. yale. edu/hugs/ n 参考書 n n ホームページを参照 Bird, R. and Wadler, P. : Introduction to Functional Programming, Prentice-Hall, 1988. (邦訳: 武市正人訳, 関数プログラミング, 近代科学 社, 1991, ISBN 4 -7649 -0181 -1)
再帰的な定義 n 定義する関数の定義式のなかにそれ自体 が現れる factorial 0 = 1 factorial (n+1) = n * factorial n = if x==0 then 1 else n*factorial(n-1)
値の列挙によるデータ型の定義 data Day = Sun | Mon | Tue | Wed | Thu | Fri | Sat workday : : Day -> Bool workday Sun = False workday Mon = True workday Tue = True workday Wed = True workday Thu = True workday Fri = True workday Sat = False
構成法の列挙による型の定義 data Figure = Circle Float |Rectangle Float n n n 構成子Circle, Rectangle 半径が 5. 2 の円: Circle 5. 2 辺が 3. 2 と 2. 5 の長方形は?
リストのパターン照合 head : : [a] -> a head (x: xs) = x tail : : [a] -> [a] tail (x: xs) = xs sum : : [Int] -> Int sum [] = 0 sum (x: xs) = x + sum xs
関数型による 抽象型 Assoc a b の実現 type Assoc a b = a -> b none : : Assoc a b none x = undefined lookup : : Assoc a b -> a -> b lookup h x = h x update : : Eq a => Assoc a b -> a -> b -> Assoc ab update h x v y | x==y =v | otherwise = lookup h y