On Mon, Feb 23, 2009 at 4: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?

Do you by any chance mean "custom reader" when you say "preprocessor"? :)

>
> Many people that don't like Lisp dialects don't like them because of
> the parentheses. I'm trying to address that.

How many of those have spend enough time with a lisp to form a valid
opinion of the syntax?

There are many programming languages who's syntax looks ugly to the
eye that do not understand its meaning.

>
> 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 ( ).

Rule 4 is a special case that introduces inconsistency. I am against it.

The syntax is basically introducing implicit parenthesis based on
indentation. I have been pondering this idea as well, but decided that
Clojure already goes so easy on the parenthesis, that it wasn't worth
my time to persue it any further.

>
> A translation from standard Clojure syntax to this alternate form
> should also be possible.
>
> Is this a bad idea?

It is not inherently bad, but I doubt that a lot of people would
prefer it as their primary reader over the standard Clojure reader.

It could, on the other hand, find a nice niche in DSLs, for programs
that need some level of scriptability by people who cannot be expected
to be lisp savvy.

>
> --
> R. Mark Volkmann
> Object Computing, Inc.
>
> >
>



-- 
Venlig hilsen / Kind regards,
Christian Vest Hansen.

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