~$ sml Standard ML of New Jersey, Version 110.0.3, January 30, 1998 [CM; autoload enabled] - 2+3; val it = 5 : int - 2+3*5; val it = 17 : int - 5>=3; val it = true : bool - 5>=6; val it = false : bool - 17 div 3; val it = 5 : int - 17 mod 3; val it = 2 : int - 17.0/3.0; val it = 5.66666666667 : real - 17.0/3; stdIn:28.1-28.7 Error: operator and operand don't agree [literal] operator domain: real * real operand: real * int in expression: 17.0 / 3 - 17.0/real(3); val it = 5.66666666667 : real - "hello"; val it = "hello" : string - "hello">="goodbye"; val it = true : bool - "hello">="help"; val it = false : bool - fun square(n) = n*n; val square = fn : int -> int - square(6); val it = 36 : int - square(square(square(2))); val it = 256 : int - abs(-3); stdIn:37.5 Error: expression or pattern begins with infix identifier "-" stdIn:37.4-37.8 Error: operator and operand don't agree [literal] operator domain: 'Z * 'Z operand: int in expression: - 3 - fun abs(n) = if n>=0 then n else 0-n; val abs = fn : int -> int - abs(-3); stdIn:38.5 Error: expression or pattern begins with infix identifier "-" stdIn:38.4-38.8 Error: operator and operand don't agree [literal] operator domain: 'Z * 'Z operand: int in expression: - 3 - abs(5-8); val it = 3 : int - fun fib(n) = if n=0 orelse n=1 then 1 else fib(n-1)+fib(n-2); val fib = fn : int -> int - fib(0); val it = 1 : int - fib(1); val it = 1 : int - fib(2); val it = 2 : int - fib(3); val it = 3 : int - fib(4); val it = 5 : int - fib(25); val it = 121393 : int - fun power(x,n) = if n=0 = then 1 = else x*power(x,n-1); val power = fn : int * int -> int - power(3,4); val it = 81 : int - power(1.5,3); stdIn:18.1-18.13 Error: operator and operand don't agree [tycon mismatch] operator domain: int operand: real * int in expression: power (1.5,3) - fun square(x:real) = x*x; val square = fn : real -> real - square(2.4); val it = 5.76 : real - fun power(x,n) = if n=0 = then 1.0 = else if (n mod 2 = 0) = then square(power(x,n div 2)) = else = x*square(power(x,n div 2)); GC #0.0.0.0.4.307: (0 ms) val power = fn : real * int -> real - power(1.5,3); val it = 3.375 : real - power(1.00001,45); val it = 1.00045009901 : real - power(1.00001,4500); val it = 1.04602762455 : real - power(1.00001,450000); val it = 90.0151059535 : real - [5,7,5,3]; val it = [5,7,5,3] : int list - hd [5,7,5,3]; val it = 5 : int - tl [5,7,5,3]; val it = [7,5,3] : int list - tl (tl [5,7,5,3]); val it = [5,3] : int list - 5::[7,5,3]; val it = [5,7,5,3] : int list - 5::7::5::[3]; val it = [5,7,5,3] : int list - 5::7::5::3::[]; val it = [5,7,5,3] : int list - [3,4] = [3,4]; val it = true : bool - [3,4] = [4,3]; val it = false : bool - [3,4] = [4,3,8]; val it = false : bool - fun length(x) = if null(x) = then 0 = else 1+length(tl(x)); val length = fn : 'a list -> int - length([4,5,4,5,4]); val it = 5 : int - length([]); val it = 0 : int - length(7); stdIn:105.1-105.10 Error: operator and operand don't agree [literal] operator domain: 'Z list operand: int in expression: length 7 - fun sum(x) = if null(x) = then 0 = else hd(x)+sum(tl(x)); val sum = fn : int list -> int - sum([1,2,3,4,5,6,7,8,9,10]); val it = 55 : int - fun prod(x) = if null(x) = then 1 = else hd(x)*prod(tl(x)); val prod = fn : int list -> int - prod([2,5,7,11]); val it = 770 : int - prod([2,2,2,2,2,2,2,2,2,2]); val it = 1024 : int $