On 03/03/2008, <b class="gmail_sendername">Yariv Sadan</b> <<a href="mailto:yarivsadan@gmail.com">yarivsadan@gmail.com</a>> wrote:<div><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Robert, this is very cool. I already started playing with LFE and it's<br> great. Thanks a lot for sharing it.<br> <br> I have a couple of suggestions:<br> <br> - it would be nice to have a preprocessor/parse transform that converts the form<br>
<br> (foo:bar baz ..)<br> <br> to<br> <br> (: foo bar baz ...)<br> <br> I find the former much more readable.</blockquote><div><br>Yes, it is easier to read but as yet I don't have any infix operators, and : is just a normal symbol character so foo:bar is a normal symbol. I have so far tried to avoid making any characters but the bare minimum needed for sexps as "special", it keeps the parsing easier. It would be possible to fix this in the macro expander if enough people complain. :-)<br>
<br>I have not really planned to add an explicit parse transform operation as in vanilla Erlang as it is "so easy" (TM) to do it yourself.<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
- It would like to have an Erlang-style '=' operator for binding<br> instead of (let). The main difference is in the number of parentheses<br> and the scoping rules. So, instead of<br> <br> (let ((a 1) (b 2)) (+ a b))<br>
<br> you could write<br> <br> (= (a 1) (b 2))<br> (+ a b)</blockquote><div><br>No, one thing I definitely want is variable scoping. I think that was a definite mistake in vanilla Erlang. 20/20 hindsight.<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
- String literals should be interpreted as literal lists rather than<br> sexps. It seems redundant to write a single quote before a string<br> literal.</blockquote><div><br>The problem is that string literals are parsed into lists, strings don't exist. Seeing their is no abstract syntax I can't tag these as any different from other literal lists as is done in vanilla and the compiler/interpreter just sees lists. So they have to be quoted. I agree though that it is not beautiful. Perhaps all integers in the function position could just be a function which evaluates to a list of itself and all the arguments. I am probably joking.<br>
</div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> - It would be great to have syntax for multi-line strings and binaries.</blockquote>
<div><br>Same problem here with string literals within binaries. The syntax can be modified later when requests stabilise.<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
- Distributing LFE under a standard open source license would<br> encourage its adoption and foster community contributions.<br> lfe_scan.erl has this license notice:<br> <br> %%% (C)Robert Virding. This stuff is mine, distributed without<br>
%%% warranty "as is" and may not be used commercially without letting<br> %%% me know.<br> <br> This wording is ambiguous. Is the only requirement to using LFE<br> commercially to let you know, or it it required to buy a license for<br>
commercial use? What happens to user contributions? Etc.</blockquote><div><br>That only applies to Leex and I know I have to do something with Leex. What I mean is that I am just interested in knowing who is using it and for what and have no intention of selling licenses, except of course if I find that it is wildly popular and I could make a fortune on it and retire to the south seas. I.e. no licenses, you can quote that.<br>
<br>As for LFE I am giving it away. If somebody has a nice, short license notice expressing this then let me know. I would, however, become disappointed if someone else started selling it. :-)<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Regards,<br> Yariv</blockquote><div><br> Robert<br><br></div></div>