(require 'grass) (grass-plant-code '( (abs print (n) ((app n succ . n_succ) (app n_succ w . ch) (app out ch) )) (abs id (n) ()) (abs mkidprint (f n) ((app print n) (app id f) )) (abs W (x y) ((app x x . xx) (app xx y) )) (abs X (f x) ((app W x . Wx) (app f Wx) )) (abs Y (f) ((app X f . Xf) (app Xf Xf) )) (abs idprint (n) ((app Y mkidprint . Y_mkidprint) (app Y_mkidprint n) )) (abs inc (n f x) ((app n f . nf) (app nf x . nfx) (app f nfx) )) (abs id (n) ()) (abs idinc (dummy) ((app id inc) )) (abs <2> (f x) ((app f x . fx) (app f fx) )) (abs id<2> (dummy) ((app id <2>) )) (abs main (n) ((app idinc 1 . inc) ;; 1 is dummy (app inc <2> . <3>) (app <2> <3> . <9>) ;; 3^2 = 9 (app inc <3> . <4>) (app <4> <4> . <256>) ;; 4^4 = 256 ; w (app <4> inc . <4>inc) (app <4>inc <9> . <13>) (app inc <13> . <14>) (app inc <14> . <15>) (app id<2> 1 . <2>) ;; 1 is dummy (app <2> <15> . <225>) ;; 15^2 = 225 (app <2> <14> . <196>) ;; 14^2 = 196 (app <2> <13> . <169>) ;; 13^2 = 169 ; SPC (app <3> <4>inc . <12>inc) (app <12>inc <169> . <181>) ;; , (app <12>inc <196> . <208>) (app <12>inc <225> . <237>) ;; d (app idinc 1 . inc) ;; 1 is dummy (app inc <169> . <170>) ;; ! (app inc <208> . <209>) ;; H (app inc <237> . <238>) ;; e (app inc <238> . <239>) (app <3> inc . <3>inc) (app <3>inc <239> . <242>) (app <3>inc <242> . <245>) ;; l (app <3>inc <245> . <248>) ;; o (app <3>inc <248> . <251>) ;; r (app idprint <209>) ;; H (app 1 <238>) ;; e (app 1 <245>) ;; l (app 1 <245>) ;; l (app 1 <248>) ;; o (app 1 <181>) ;; , (app 1 <169>) ;; SPC (app 1 <256>) ;; w (app 1 <248>) ;; o (app 1 <251>) ;; r (app 1 <245>) ;; l (app 1 <237>) ;; d (app 1 <170>) ;; ! )) ))