課題1
sumlist
定義
fun sumList nil = 0
| sumList (a::b) = a + sumList b;
実行例
val t = [2,3,4] : int list
val it = 9 : int
member
定義
fun member (E, nil) = false
| member (E, h::t) = E = h orelse member (E,t);
実行例
val it = [2,5,5] : int list
val it = true : bool
unique
定義
fun unique nil = []
| unique (a::A) = if member(a,A) = true
then unique A
else a::unique A;
実行例
val it = [3,4,2,5] : int list
filter
定義
fun filter (f,nil) = []
| filter(f,a::A) = if f(a) = true
then a::filter(f,A)
else filter(f,A)
実行例
- fun t x = if x = 2 then true else false;
val t = fn : int -> bool
- filter(t,[2,1,2,1,2,1,3,3,2]);
val it = [2,2,2,2] : int list
delete
定義
fun delete (D, nil) = []
| delete (D,h::H) = if h == D
then delete (D,H)
else h::delete (D, H);
実行例
- val t = [2,3,3,3,3,3,3,5,5];
val t = [2,3,3,3,3,3,3,5,5] : int list
val it = [2,5,5] : int list
課題2
difference(差集合)
定義
fun difference ([],B) = []
| difference(a::A,B) = if member(a,B) = true
then difference(A,B)
else a::difference(A,B);
実行例
val n = [1,2,3,4,5] : int list
val m = [4,5,6,7] : int list
val it = [1,2,3] : int list
fun intersection ([],ys)=[]
| intersection(x::xs,ys)=if member(x,ys) =true
then x::intersection (xs,ys)
else intersection (xs,ys);
fun union (xs,ys)= unique(xs@ys);
fun subseteq ([],ys)= true
| subseteq (x::xs,ys)= if member(x,ys)=true
then subseteq(xs,ys)
else false;
- intersection([1,2,3],[1,3,5,7]);
val it = [1,3] : int list
- union([1,2,3],[1,3,5,7]);
val it = [2,1,3,5,7] : int list
- subseteq ([1,2,3],[1,3,5,7]);
val it = false : bool
- subseteq ([1,2,3],[1,3]);
val it = false : bool
- subseteq ([1,2,3],[1,2,3]);
val it = true : bool
- subseteq ([1,3],[1,2,3]);
val it = true : bool
最終更新:2011年11月11日 11:44