Advertisement
Guest User

Untitled

a guest
May 14th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. q1
  2. fun unique [] = []
  3.     | unique (x::xs) = x:: unique (List.filter (fn y => y<>x) xs);
  4. q3 
  5. local
  6.     fun merge _ [] [] = []
  7.         | merge _ list [] = list
  8.         | merge _ [] list = list
  9.         | merge pred (x::xs) (y::ys) = if pred(x,y) then (y::(merge pred (x::xs) ys))
  10.                                                   else (x::(merge pred xs (y::ys)))
  11. in
  12.     fun mergesort _ [] = []
  13.         | mergesort _ [x] = [x]
  14.         | mergesort pred l = merge pred
  15.             (mergesort pred (List.take (l,((length l) div 2))))
  16.             (mergesort pred (List.drop (l,((length l) div 2))))
  17. end;
  18.  
  19. local
  20.     fun merge _ [] [] = []
  21.         | merge _ list [] = list
  22.         | merge _ [] list = list
  23.         | merge pred (x::xs) (y::ys) = if pred(x,y) then (y::(merge pred (x::xs) ys))
  24.                                                   else (x::(merge pred xs (y::ys)))
  25. in
  26.     fun mergesort _ [] = []
  27.         | mergesort _ [x] = [x]
  28.         | mergesort pred l = merge pred
  29.             (mergesort pred (List.take (l,((length l) div 2))))
  30.             (mergesort pred (List.drop (l,((length l) div 2))))
  31. end;
  32. q4
  33. fun sublistsSort l = mergesort (fn(x,y) => length x > length y) l
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement