Metaprogramming

Richard A. O'Keefe ok@REDACTED
Thu Aug 24 03:14:53 CEST 2006


"Ryan Rawson" <ryanobjc@REDACTED> wrote:
	Meta functions? like as in scheme:
	
	(define (lambda (x y)
	                  (lambda (x)
	                       (* x y) ) ) )
	
Actually, that's not syntactically correct; there's an identifier missing.
Presumably it was meant to be

    (define multiplier
      (lambda (y)
        (lambda (x)
          (* x y))))

so that (multiplier 3) returns a multiply-by-3 function.

That's not *META* functions, it's just plain old
"HIGHER-ORDER" functions.  And Erlang has them.

    multiplier(Y) -> fun (X) -> X*Y end.

	I think Erlang has a very weak meta programming ability.
	You can't define your "meta functions" in the language -
	they are strings.
	
Under your (rather unusual) definition of meta programming, WRONG.

By the way, the ability to take a string and turn it into executable
code at run time was there in SNOBOL 4 running on things like OS/360
back in the days when mainframes ruled the earth.




More information about the erlang-questions mailing list