OK, some points I forgot to mention:<br><br>- Of course, the interpreter does *NOT* handle recursive letrecs, binaries, receive or try. Yet.<br>- The token syntax is specified in leex but I have included a copy of a generated erlang file.<br>
- The compiler is "sensitive" to some errors and will occasionally crash, though it should only generate correct code.<br>- The line numbers used in error messages are the line of the beginning of the form in which the error occurs. As the forms are truly raw data this was the best way I could get line numbers in.<br>
<br>The answer to Roberto's question about line number 6666 is just I wanted a big number which was guaranteed not to clash with users code. And 666 seemed to small. :-)<br><br>- I have been thinking about a way to load a module into the shell (when it exists) and I think I have worked out a way to do it. With a little bit of luck it should also support macros. You might actually be able to save a module from the shell as well but I have not thought this through properly yet.<br>
<br>Please report bugs and other mis-features and I will fix them as soon as I can. Unfortunately I am using a toy computer so sending out patches will be difficult.<br><br>Robert<br><br><div><span class="gmail_quote">On 02/03/2008, <b class="gmail_sendername">Robert Virding</b> <<a href="mailto:rvirding@gmail.com">rvirding@gmail.com</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
I have finally released LFE, Lisp Flavoured Erlang, which is a lisp syntax front-end to the Erlang compiler. Code produced with it is compatible with "normal" Erlang code. The is an LFE-mode for Emacs and the lfe-mode.el file is include in the distribution. Most things seem to work but some things have not been done yet:
<br>

<br>
- The interpreter does handle recursive letrecs, binaries, receive or try.
<br>
- There is no lisp shell.
<br>- Documentation!<br>

<br>
Yet. The system will be updated as new features are added. This is the 1st release so there is much left to do. <br><br>I have include the existing documentation lfe_guide.txt in this mail. There are a number of LFE test files and a version of the LFE interpreter written in LFE as examples of code. There are also a number of issues which need to be decided for the next version and I have included a file lfe_issues.txt which describe them in this mail. Both files are in the distribution.<br>

<br>Note that while this this lisp has been inspired by Scheme (one of the issues) it is a NOT Scheme, it is Erlang with a lisp syntax and many nice lisp features. Not for that matter is it Common Lisp. In fact features of the Erlang engine mean that it is actually impossible to implement full Scheme of CL. No, they shouldn't be changed or added.<br>

<br>It was quite writing Erlang code in lisp and I could easily consider using a lisp syntax for Erlang. I suppose it depends where your preferences lye. It was also easy to get into the traditional lisp habit of using long names for everything which I personally think is not a Good Thing. Perhaps we should do AFE, Arc Flavoured Erlang, instead? Although I think they have gone too far and missed what makes programs easy to read.<br>

<br>Macros are very nice, and it is easy to generate LFE code, which is one of the benefits of lisp syntax.<br><br>LFE also shows that it would probably be possible to write other front-ends inspired by other languages, though why anyone should want to I don't know. Perhaps back to a real Prolog syntax again.<br>

<br>The system can be found in the "User Contributions" section at <a href="http://trapexit.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">trapexit.org</a>, <a href="http://forum.trapexit.org/viewtopic.php?p=40268#40268" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://forum.trapexit.org/viewtopic.php?p=40268#40268</a>.<br>

<br>
                                
                                
                                        <span>


        </span>
<br clear="all"></blockquote></div><br>