I wrote a function that works as expected, but I donβt understand why the output is like this.
Functions:
datatype prop = Atom of string | Not of prop | And of prop*prop | Or of prop*prop; (* XOR = (A And Not B) OR (Not A Or B) *) local fun do_xor (alpha,beta) = Or( And( alpha, Not(beta) ), Or(Not(alpha), beta)) in fun xor (alpha,beta) = do_xor(alpha,beta); end;
Test:
val result = xor(Atom "a",Atom "b");
Output:
val result = Or (And (Atom
tech ref
source share