It's a good idea. Not for anyone to actually use, but as an demonstration of
"code is data," and of the separation of surface syntax from the code
data-structure.
Can you do this without reader macros? Can you keep it homoiconic?
(Apparently so, given the transformation rules, but I wonder if there are
any corner cases.)

Joshua

On Mon, Feb 23, 2009 at 5:42 PM, Mark Volkmann <r.mark.volkm...@gmail.com>wrote:

>
> I have an idea I'd like to float to see if there are reasons why it's
> a bad idea.
>
> What if Clojure had an alternate "surface" syntax that was translated
> into standard Clojure syntax by a kind of preprocessor?
>
> Many people that don't like Lisp dialects don't like them because of
> the parentheses. I'm trying to address that.
>
> Here's a simple example of valid Clojure code.
>
> (defn pig-latin [word]
>  (let [first-letter (first word)]
>    (if (.contains "aeiou" (str first-letter))
>      (str word "ay")
>      (str (subs word 1) first-letter "ay"))))
>
> (println (pig-latin "red"))
> (println (pig-latin "orange"))
>
> Here's what that same code would look like in my alternate syntax.
>
> defn pig-latin [word]
>  let [first-letter (first word)]
>    if .contains "aeiou" (str first-letter)
>      str word "ay"
>      str (subs word 1) first-letter "ay"
>
> println (pig-latin "red")
> println (pig-latin "orange")
>
> The rules for turning this into standard Clojure syntax are pretty simple.
>
> 1) If a line is indented farther than the previous one, it is part of
> the previous line.
> 2) If a line doesn't start with a (, then add one.
> 3) If the next line is indented less than this one, add the
> appropriate number of )'s at the end.
> 4) If the first token on a line is "if" and the first non-whitespace
> character after it is not (
>    then assume the rest of the line is the condition and wrap it in ( ).
>
> A translation from standard Clojure syntax to this alternate form
> should also be possible.
>
> Is this a bad idea?
>
> --
> R. Mark Volkmann
> Object Computing, Inc.
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to 
clojure+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to