oh319wm00 21% sml Standard ML of New Jersey v110.65 [built: Tue Aug 14 08:55:23 2007] - let val x = 2 val y = x + 1 in (x,y) end; val it = (2,3) : int * int - let val x = x+1 val y = x + 1 in (x,y) end; stdIn:2.13 Error: unbound variable or constructor: x - let fun f x = if x=0 then 0 else f(x-1)+2; val y = f(1) + 1 in (f(2),y) end; val it = (4,3) : int * int - let fun even n = if n=0 then true else if n=1 then false else odd (n-1) = and odd n = if n=1 then true else if n=0 then false else even(n-1) = in (even(1),even(8),odd(8),odd(81)) = end; val it = (false,true,false,true) : bool * bool * bool * bool - datatype rank = Jack | Queen | King | Ace | Two | Three | Four | Five | Six | Seven | Eight | Nine | Ten; datatype rank = Ace | Eight | Five | Four | Jack | King | Nine | Queen | Seven | Six | Ten | Three | Two - Jack; val it = Jack : rank - Ten; val it = Ten : rank - datatype suit = Hearts | Clubs | Diamonds | Spades; datatype suit = Clubs | Diamonds | Hearts | Spades - Hearts; val it = Hearts : suit - (Jack,Hearts); val it = (Jack,Hearts) : rank * suit - type card = rank * suit; type card = rank * suit - fun handSize(hand:card list) = length hand; val handSize = fn : card list -> int - val myHand = [(Jack,Hearts),(Two,Spades),(Seven,Diamonds)] : card list; val myHand = [(Jack,Hearts),(Two,Spades),(Seven,Diamonds)] : card list - myHand; val it = [(Jack,Hearts),(Two,Spades),(Seven,Diamonds)] : card list - handSize(myHand); val it = 3 : int - val myHand = [(Jack,Hearts),(Two,Spades),(Seven,Diamonds)]; val myHand = [(Jack,Hearts),(Two,Spades),(Seven,Diamonds)] : (rank * suit) list - handSize(myHand); val it = 3 : int - datatype card = Card of (rank * suit); datatype card = Card of rank * suit - Card(Jack,Hearts); val it = Card (Jack,Hearts) : card - fun handSize(hand:card list) = length hand; val handSize = fn : card list -> int - handSize(myHand); stdIn:30.1-30.17 Error: operator and operand don't agree [tycon mismatch] operator domain: card list operand: (rank * suit) list in expression: handSize myHand - val myHand = [Card(Jack,Hearts),Card(Two,Spades),Card(Seven,Diamonds)]; val myHand = [Card (Jack,Hearts),Card (Two,Spades),Card (Seven,Diamonds)] : card list - handSize(myHand); val it = 3 : int - fun foo x y = 2*x+3*y; val foo = fn : int -> int -> int - foo 10 100; val it = 320 : int - (foo 10); val it = fn : int -> int - (foo 10) 100; val it = 320 : int - fun pairAll xs ys = map (fn x => map (fn y => (x,y)) ys) xs; val pairAll = fn : 'a list -> 'b list -> ('a * 'b) list list - pairAll [1,2,3,4] ["a","b","c"]; val it = [[(1,"a"),(1,"b"),(1,"c")],[(2,"a"),(2,"b"),(2,"c")], [(3,"a"),(3,"b"),(3,"c")],[(4,"a"),(4,"b"),(4,"c")]] : (int * string) list list - [1,2]@[3,4]; val it = [1,2,3,4] : int list - fun pairAll xs ys = foldl (op @) nil (map (fn x => map (fn y => (x,y)) ys) xs); val pairAll = fn : 'a list -> 'b list -> ('a * 'b) list - pairAll [1,2,3,4] ["a","b","c"]; val it = [(4,"a"),(4,"b"),(4,"c"),(3,"a"),(3,"b"),(3,"c"),(2,"a"),(2,"b"),(2,"c"), (1,"a"),(1,"b"),(1,"c")] : (int * string) list - fun pairAll xs ys = foldr (op @) nil (map (fn x => map (fn y => (x,y)) ys) xs); val pairAll = fn : 'a list -> 'b list -> ('a * 'b) list - pairAll [1,2,3,4] ["a","b","c"]; val it = [(1,"a"),(1,"b"),(1,"c"),(2,"a"),(2,"b"),(2,"c"),(3,"a"),(3,"b"),(3,"c"), (4,"a"),(4,"b"),(4,"c")] : (int * string) list - pairAll [Jack,Queen,King,Ace,Two,Three,Four,Five,Six,Seven,Eight,Nine,Ten] [Hearts,Clubs,Spades,Diamonds]; val it = [(Jack,Hearts),(Jack,Clubs),(Jack,Spades),(Jack,Diamonds),(Queen,Hearts), (Queen,Clubs),(Queen,Spades),(Queen,Diamonds),(King,Hearts),(King,Clubs), (King,Spades),(King,Diamonds),...] : (rank * suit) list - length it; val it = 52 : int - map Card (pairAll [Jack,Queen,King,Ace,Two,Three,Four,Five,Six,Seven,Eight,Nine,Ten] [Hearts,Clubs,Spades,Diamonds]); val it = [Card (Jack,Hearts),Card (Jack,Clubs),Card (Jack,Spades), Card (Jack,Diamonds),Card (Queen,Hearts),Card (Queen,Clubs), Card (Queen,Spades),Card (Queen,Diamonds),Card (King,Hearts), Card (King,Clubs),Card (King,Spades),Card (King,Diamonds),...] : card list - length it; val it = 52 : int - val deck = map Card (pairAll [Jack,Queen,King,Ace,Two,Three,Four,Five,Six,Seven,Eight,Nine,Ten] [Hearts,Clubs,Spades,Diamonds]); val deck = [Card (Jack,Hearts),Card (Jack,Clubs),Card (Jack,Spades), Card (Jack,Diamonds),Card (Queen,Hearts),Card (Queen,Clubs), Card (Queen,Spades),Card (Queen,Diamonds),Card (King,Hearts), Card (King,Clubs),Card (King,Spades),Card (King,Diamonds),...] : card list -