It is implausible that that would come out of a single call to
generate-constraints.
It is clearly wrong because the program should type check and it has
Num = Bool which doesn't unify.
Why would you think that works? What process are you using to come up
with these choices?
This is everything you need to know:
"iszero : num -> bool"
That means that the expression must be a bool, because it is the
output of iszero, and that the argument to iszero must be a number,
then you'll get all the constraints from the argument expression too.
Jay
On Mon, Dec 2, 2013 at 7:25 PM, Willard Hagen <
willar...@gmail.com> wrote:
> So is it this?
>
> (list
> (eqc (t-var 'top) (t-var 'iszero100158))
> (eqc (t-var 'iszero100158) (t-num))
> (eqc (t-num) (t-bool)))