[erlang-questions] Lisp syntax for Erlang

Robert Virding <>
Fri Dec 7 00:01:57 CET 2007


A lot of stuff deleted, not because it is uninteresting but just because I
don't really have a reply to it yet. We'll see when I get there.

On 05/12/2007, YC <> wrote:
>
>
> As yours but quoted:
> > (case a
> >   ('foo #('bar))
> >   ('bar #('foo 'bar)))
> >
>
> The one I wrote was scheme's version.  It can match multiple bindings with
> one clause, but that can make it harder to transform into erlang.
>
>
> >
> > foo(1) -> 2; foo(abc) -> {foo, bar}. => (defun foo ((1) 2) ((abc) #(foo
> > > bar)))
> > >
> >
> > I was more into:
> >
> > (defun foo (arg)
> >   (case arg
> >     (1 2)
> >     (abc '#(foo bar))))
> >
>
> To me this is where the basic lisp language doesn't offer as much as
> erlang.  Ability to match on the function head is a very nice syntactic
> sugar - it *just* look better than case statements, especially with
> recursions.
>
> In scheme with pattern matching lib (below is PLT scheme) one can write
>

What I didn't explain, or show, properly here is that (case ... ) uses
Erlang type matching. So

    case foo(4) of
        {ok,Res} when is_integer(Res) -> {integer,Res};
        {ok,Res} -> {other,Res};
        {error,E} -> boom(E)
    end

becomes

    (case (foo 4)
      ((#('ok res) (when (integer? res)) #('integer res))
      ((#('ok res) #('other res))
      ((#('error e) (boom 3)))

Lastly - I think your idea is interesting and the above are my 2 cents of
> input to your goal, hopefully it helps more than it hurts :)
>

No worries, I have no problems in stealing other peoples' good ideas.

p.s. did you see Mark Feely's scheme to erlang? It might provide some
> inspirations. http://www.erlang.org/pipermail/erlang-questions/2007-June/027057.html
>
>

Yes, I read it, but unfortunately from the point of view of the current
discussion he ignores the interesting question of inter-module calls. :-)

Robert
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20071207/1e50ca74/attachment.html>


More information about the erlang-questions mailing list