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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---