Pliant talk forum

Pliant talk forum

Bug report: Building expressions with `console' in them

Console doesn't seem to work if it appears alone in an expression.
Message posted by maybe Gordon Matzigkeit on 2002/04/01 14:12:50
Here is my code:
module "/pliant/language/compiler.pli"

meta doit e
 if e:size = 1
#  var Link:Expression exp :> expression immediat { 1; console OBJ:name eol } substitute OBJ e:0 near e

  var Link:Expression exp :> expression immediat { console OBJ:name eol } substitute OBJ e:0 near e

  e compile_as exp

type Foo
 field Str name

(gvar Foo foo) name := "foo-name"
doit foo

I would expect both versions of `exp' above to print "foo-name", but
only the first one does.  Do you have an explanation?

Message posted by maybe Hubert Tonneau on 2002/04/01 14:20:57
The correct version would be:

var Link:Expression exp :> expression immediat { (console OBJ:name eol) } substitute OBJ e:0 near e

Adding '1 ;' solves the problem because 'a b ; c d' is translated to '{ (a b) (c d) }'
Message posted by maybe Hubert Tonneau on 2002/04/01 14:23:05
Looks like my solution is a bit too complex.
The right one is rather:

var Link:Expression exp :> expression immediat (console OBJ:name eol) substitute OBJ e:0 near e
Message posted by maybe Gordon Matzigkeit on 2002/04/01 19:06:39
Thanks.  That helped me understand the issue.