Advertisement
Guest User

Untitled

a guest
Dec 23rd, 2016
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. fun sum nil = 0
  2. | sum(h::t) = h + sum t;
  3.  
  4. fun doublist nil = nil
  5. | doublist(h::t) = 2*h :: doublist t;
  6.  
  7. fun len nil = 0
  8. | len(h::t) = 1 + len t;
  9.  
  10. fun triplist nil = nil
  11. | triplist(h::t) = 3*h :: triplist t;
  12.  
  13. fun duplist nil = nil
  14. | duplist(h::t) = h :: h :: duplist t;
  15.  
  16. fun prodlist nil = 1
  17. | prodlist(h::t) = h * prodlist t;
  18.  
  19. fun rev nil = nil
  20. | rev(h::t) = (rev t) @ [h];
  21.  
  22. fun space nil = nil
  23. | space(h::t) = [h, " "] @ (space t);
  24.  
  25. fun flatten nil = nil
  26. | flatten (h::t) = h @ (flatten t);
  27.  
  28. fun count_ nil = 0
  29. | count_ (1::t) = 1 + count_ t
  30. | count_ (h::t) = count_ t;
  31.  
  32. fun timeslist x nil = nil
  33. | timeslist x (h::t) = x * h :: timeslist x t;
  34.  
  35. (*
  36. fun last_h x nil = x
  37. | last_h x (h::t) = last_h h t;
  38.  
  39. fun last (h::t) = last_h h t;
  40. *)
  41.  
  42. fun last [h] = h
  43. | last (h::t) = last t;
  44.  
  45. fun member (x, nil) = false
  46. | member (x, (h::t)) = if (x = h) then true else member (x, t);
  47.  
  48. fun vallist nil = nil
  49. | vallist (h::t) = ord h - ord #"0" :: vallist t;
  50.  
  51. (*################################################################################################*)
  52.  
  53. fun index(0, h::t) = h
  54. | index(n, h::t) = index(n-1, t);
  55.  
  56. fun takeN(0, h::t) = nil
  57. | takeN(n, h::t) = h :: takeN(n-1, t);
  58.  
  59. fun dropN(0, x) = x
  60. | dropN(n, h::t) = dropN(n-1,t);
  61.  
  62. fun insert (n:int) nil = [n]
  63. | insert n (h::t) = if (n<h) then n::h::t
  64.                              else h::(insert n t);
  65. fun sort nil = nil
  66. | sort (h::t) = insert h (sort t);
  67.  
  68. fun upto x y = if (x = y) then [x] else x::(upto (x + 1) y);
  69.  
  70. fun dropSpace nil = nil
  71. | dropSpace(h::t) = if (h= #" ") then dropSpace t else h::t;
  72.  
  73. fun takeSpace nil = nil
  74. | takeSpace (h::t)= if (h= #" ") then h::takeSpace(t) else nil;
  75.  
  76. fun dropNonSpace nil = nil
  77. | dropNonSpace(h::t) = if (h <> #" ") then dropNonSpace(t) else h::t;
  78.  
  79. fun takeNonSpace nil = nil
  80. | takeNonSpace (h::t)= if (h <> #" ") then h::takeNonSpace(t) else nil;
  81.  
  82. fun firstWord x = takeNonSpace(x);
  83.  
  84. fun butFirstWord x = dropSpace(dropNonSpace(x));
  85.  
  86. (*################################################################################################*)
  87.  
  88. fun map f nil = nil
  89. | map f (h::t) = (f h)::map f t;
  90. fun reduce f b nil = b
  91. | reduce f b (h::t) = f(h,reduce f b t);
  92. fun filter f nil = nil
  93. | filter f (h::t) = if f h then h::filter f t else filter f t;
  94.  
  95. fun member x nil = false
  96. | member x (h::t) = x=h orelse member x t;
  97.  
  98. fun zip f nil nil = nil
  99. | zip f (h::t) (i::s) = f(h,i)::zip f t s;
  100.  
  101. fun fst(a,_) = a; (* Also try #1 *)
  102. fun snd(_,b) = b; (* Try #2 *)
  103.  
  104. val ftrl = map (fn x => 3 * x);
  105.  
  106. val fhel = map (hd o explode);
  107.  
  108. val fttl = map (implode o tl o tl o explode);
  109.  
  110. val fsml = map (fn x => implode(#"s"::(explode x) @ [#"m"] ));
  111.  
  112. val r = reduce (fn(a:int,b:int list)=>b@[a]:int list) nil;
  113. val p = reduce (op ::);
  114. val dr = reduce (fn(a,b)=>a+10*b) 0;
  115. fun m x = reduce (fn(a,b)=>(a=x) orelse b) false;
  116. fun n x = reduce (fn(a,b)=>(a=x) andalso b) true;
  117. val im = reduce (op ^) "";
  118. val ts = reduce (fn(a,b)=>if a=" " then nil else a::b) nil;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement