If the expression isn't 'true' or 'false' atoms then we assume it's a comparison expression and try to check its truth value. If this fails then it will try both branches, to allow for e.g. compilation. THis almost works, but there's a choice point or something that gets hit before it tries the false path, ?- joy(` [32 >] [++] [--] ifte`, Si, So). Si = [_2076|_2078], So = [_2076+1|_2078] ; wtf? + Si = [_2076|_2078], So = [[+], 1, _2076|_2078] ; Si = [_2076|_2078], So = [_2076-1|_2078] ; wtf? - Si = [_2076|_2078], So = [[-], 1, _2076|_2078] ; wtf? branch Si = [_2076|_2078], So = [[branch], [++], [--], _2076>32, _2076|_2078] ; wtf? swap Si = [_2076|_2078], So = [[swap, branch], [--], [++], _2076>32, _2076|_2078] ; wtf? first Si = [_2076|_2078], So = [[first, [++], [--], swap, branch], [_2076>32|_2078], _2076|_2078] etc... |
||
|---|---|---|
| .. | ||
| compiler.pl | ||
| defs.txt | ||
| metalogical.pl | ||
| thun.pl | ||