アットウィキロゴ
課題1

sumlist

定義
fun sumList nil = 0
 | sumList (a::b) = a + sumList b;

実行例
  • val t = [2,3,4];
val t = [2,3,4] : int list
  • sumList t;
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
  • member(2,t);
val it = true : bool

unique

定義
fun unique nil = []
| unique (a::A) = if member(a,A) = true
                  then unique A
                  else a::unique A;
実行例
  • unique [3,2,3,4,2,5];
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
  • delete (3,t);
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];
val n = [1,2,3,4,5] : int list
  • val m = [4,5,6,7];
val m = [4,5,6,7] : int list
  • difference (n,m);
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