Second ML example


SUBMITTED BY: smart4two

DATE: Jan. 1, 2018, 12:06 p.m.

FORMAT: Text only

SIZE: 2.4 kB

HITS: 209

  1. Second ML example
  2. ~$ sml
  3. Standard ML of New Jersey, Version 110.0.3, January 30, 1998 [CM; autoload enabled]
  4. - fun fact (n) =
  5. = if n=0 then 1
  6. = else n*fact(n-1);
  7. val fact = fn : int -> int
  8. - fact 7;
  9. val it = 5040 : int
  10. - fact 0;
  11. val it = 1 : int
  12. - fact(0-1);
  13. GC #11.119.121.123.126.492: (10 ms)
  14. GC #11.120.122.124.127.497: (10 ms) [an infinite loop, I entered <ctrl>C]
  15. Interrupt
  16. GC #11.121.123.125.128.499: (0 ms)
  17. - fun successor(n) = n+1;
  18. val successor = fn : int -> int
  19. - fun pred(n) = n-1;
  20. val pred = fn : int -> int
  21. - fun add(m,n) =
  22. = if m=0 then n
  23. = else successor(add(pred(m),n));
  24. val add = fn : int * int -> int
  25. - add(2,2);
  26. val it = 4 : int
  27. - add(500,50);
  28. val it = 550 : int
  29. - let val x=5 in (3*x*x - 7*x - 10) end;
  30. val it = 30 : int
  31. - let val x=3
  32. = in let val x=x+1
  33. = in x+x*x
  34. = end
  35. = end;
  36. val it = 20 : int
  37. - [1,3] @ [2,5,4];
  38. val it = [1,3,2,5,4] : int list
  39. - fun append(x,z) = if null(x) then z
  40. = else hd(x)::append(tl(x),z);
  41. val append = fn : 'a list * 'a list -> 'a list
  42. - append([1,3],[2,4,5]);
  43. val it = [1,3,2,4,5] : int list
  44. - append([1,3],[]);
  45. val it = [1,3] : int list
  46. - append([],[2,4,5]);
  47. val it = [2,4,5] : int list
  48. - fun reverse(x,z) = if null(x) then z
  49. = else reverse(tl(x),hd(x)::z);
  50. val reverse = fn : 'a list * 'a list -> 'a list
  51. - reverse([2,4,6,8,10],[]);
  52. val it = [10,8,6,4,2] : int list
  53. - fun rev(x) = reverse(x,[]);
  54. val rev = fn : 'a list -> 'a list
  55. - rev [2,4,6,7,10];
  56. val it = [10,7,6,4,2] : int list
  57. - fun len([]) = 0
  58. = | len(a::y) = 1+len(y);
  59. GC #0.0.0.0.2.89: (0 ms)
  60. val len = fn : 'a list -> int
  61. - len [2,4,6,8,10];
  62. val it = 5 : int
  63. - len [];
  64. val it = 0 : int
  65. - len ["a","c","e","g"];
  66. val it = 4 : int
  67. - fun app([],z) = z
  68. = | app(a::y,z) = a::append(y,z);
  69. val app = fn : 'a list * 'a list -> 'a list
  70. - app([1,3],[2,4,5]);
  71. val it = [1,3,2,4,5] : int list
  72. - fun strip (a,[]) = []
  73. = | strip (a,b::y) =
  74. = if a=b
  75. = then strip(a,y)
  76. = else b::strip(a,y);
  77. val strip = fn : ''a * ''a list -> ''a list
  78. - strip(3,[1,2,3,4,3,2,1]);
  79. val it = [1,2,4,2,1] : int list
  80. - strip(5,[1,2,3,4,3,2,1]);
  81. val it = [1,2,3,4,3,2,1] : int list
  82. - strip("dog",["cat","dog","fish","dog","book"]);
  83. val it = ["cat","fish","book"] : string list
  84. - strip([1,2],[[3,4],[2,3],[1,2],[1,3]]);
  85. val it = [[3,4],[2,3],[1,3]] : int list list
  86. <ctrl d>
  87. $

comments powered by Disqus