Pliant talk forum

Pliant talk forum

Discussion: going to deep meta programming

Properties may be used to pass arguments
by behind...
Message posted by pom on 2003/03/30 10:42:51
module "/pliant/language/compiler.pli"

meta associate e
  if e:size<>2
    return
  e:0 compile ?
  var Arrow cst := e:1 evaluate ?
  if cst<>null
    e:0:result:properties insert "pom" false cst
  e set_result e:0:result e:0:access

function test i s
  arg Int i; arg_rw Str s
  console s "=" i eol
  
meta test e
  if e:size<>1 or not (e:0 cast Int)
    return
  e suckup e:0
  var Pointer:Arrow c :> e:0:result:properties first "pom"
  if c<>null and entry_type:c=Str
    e add (instruction (the_function test Int Str) e:0:result (argument mapped_constant Str (c map Str)))
    e set_void_result

function doit
  var Int i := 123
  associate i "variable i"
  test i
  i += 3
  test i

doit