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
-~----------~----~----~----~------~----~------~--~---

Reply via email to