A vision for Parrot

Darren New wrote:

Benjamin Goldberg wrote:

Why would any of these require that strings be eval()ed?

You compile the string to bytecode, once, and pass this compiled
code as the callback for your keystrokes, window events, and async
file operations. You wouldn’t pass a string to be eval()ed – that
would be silly.

Bindings substitute their values. File events get additional
arguments. Etc.

So? Pass these in as arguments. There’s no need to recompile a
procedure for each and every different set of arguments that might be
passed to it. That would defeat the point of having procedures in the
first place.

Furthermore, even if one did do something that foolish, the compiler
needs to be loaded only once…

I missed your parenthetical comment on first reading. Yes, sorry.

Peculiar – if I’d been reading someone else’s description of it, and he
didn’t say, “(if it’s not already loaded)”, I would have assumed that
it wouldn’t be loaded if it already had been, unless he said something
to the contrary (like, “yes, I really do mean reload the compiler from
disk each and every time we eval() a string”)

···


my $n = 2; print +(split //, ‘e,4c3H r ktulrnsJ2tPaeh’
…“\n1oa! er”)[map $n = ($n * 24 + 30) % 31, (42) x 26]