Transformation

CLP[ (abs (i_1 .. i_n) b) ] =
   (@prod (abs (clo i_1 .. i_n)
            (let ((v_1 (@get 2 clo)) .. )
              CLP[b] ))
          v_1 .. )
wobei {v1,…} = freie Variablen in b


CLP[ (app f a_1 .. a_n) ] =
  (let ((clo CLP[f])
        (code (@get 1 clo)))
    (app code clo CLP[a_1] .. CLP[a_n]) )


zur Erhaltung der CPS-Form: anstatt erster Regel

CLP[ (let ((i (abs (..) ..))) b) ] = ...



Johannes Waldmann 2011-01-23