user-defined operators

Shawn Pearce <>
Thu Mar 25 03:38:28 CET 2004


Ulf Wiger <> wrote:
> So is your suggestion that one would write e.g.
> 
>   -import(sys, ['!!'/2,]).
> 
>   fetch(Host, File) ->
>      Host `!!` {get, File}.

Bleh!

	spearce `wontuse` backticks_for_operators.

Are we trying to become Perl here or something?  :-)

Note that I don't have any suggestions for a better replacement of the
backtick, I understand why it helps to parse the extended operators, but
just don't like the backtick here...

On the other hand, that is a really very, very cool idea.  Because it
makes adding operators a whole lot easier.

Would be nice if it was possible to do (and I'm not advocating backticks
by any way, just an example):

	-import(sys, ['!!'/2]).
	-import(plain_fsm, ['system'/1]).

	fetch(Host, File) ->
		Host `!!` {get, File}.

	loop() ->
		`system` receive
		{get, File} ->
			file:open(File),
			...,
			loop()
		end.

Which the receive call then winds up into:

	system(receive
		....
	end).

which then goes through a parse transform in Ulf's plain_fsm module
thereby creating his extended receive code...

So have infix operators map to arity 2 functions, prefix operators to
arity 1.

-- 
Shawn.



More information about the erlang-questions mailing list