BEAM implementation questions
Thomas Lindgren
thomasl_erlang@REDACTED
Wed Jan 26 11:26:09 CET 2005
--- Dominic Williams <erlang-list@REDACTED>
wrote:
> Thomas Lindgren wrote:
>
> > I'd like support for this, perhaps even moreso if
> > there was some language support for declaring
> > "constant data".
>
> I'm curious about why you'd want any specific
> support.
> What's wrong with a constant function, e.g.:
>
> pi() -> 3.1415.
> max_users() -> 50.
There's nothing _really_ wrong with functions
returning constant data, I just find it (a bit)
clearer to have a separate notation to say "this is a
data access, not a computation" and to indicate that I
want this data to be cached and shared somewhere. (In
some cases you instead want to hide that distinction,
of course.)
Here's one case where it turns up: when I build a
lexer (lex.erl in jungerl), I dynamically generate the
lexing table and index into it when driving the lexer.
But it would be nicer to instead have a data structure
I could emit once and for all, and then index into it
with something like:
lextable[StateName, Char] (forgive the syntax :-)
with lextable/2 thus being a constant 2D array, not a
function. Saving the generated table as a loadable
module would also be quite useful.
The same issue turns up for yecc, incidentally, which
generates a huge swathe of code in order to implement
what amounts to a table. Cf. erl_parse.erl.
Best,
Thomas
__________________________________
Do you Yahoo!?
Read only the mail you want - Yahoo! Mail SpamGuard.
http://promotions.yahoo.com/new_mail
More information about the erlang-questions
mailing list