Mark, If you have not been discouraged by the crowd of people having answered 'no' to your question :-), and still have the idea of exploring this area, would you consider designing a "surface language" that allows bidirectional flow to and from clojure code ?
If you do so, then you would well provide two functions, one from your langage to clojure, and one from clojure to your language. And then, it could be easy to : * translate back and forth between your language and clojure * use your work in IDEs (see what I mean :-) as just an alternate visualisation/editing option (and potentially still let the IDE use straight clojure format persistence ). :-) -- Laurent 2009/2/24 Mark Volkmann <r.mark.volkm...@gmail.com> > > On Tue, Feb 24, 2009 at 6:33 AM, Onorio Catenacci <catena...@gmail.com> > wrote: > > > > On Feb 23, 10:42 am, 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? > >> > > > > I'm just new to Clojure but I have a couple of thoughts on this I'd > > like to share: > > > > 1.) What's so hard about using parentheses? I mean really it's just a > > different syntax to learn. Is this really that much more difficult to > > understand than using curly braces in C-based languages or IF/ ENDIF > > (and similar constructs) in VB and VB-like languages? What I > > personally find confusing is _inconsistent_ syntax. If I live to be > > 100 I don't think I'll ever be able to remember the rule about when a > > person uses parentheses behind a subroutine or function call in VB. > > This is one reason I don't much care for VB. > > As I said, it's not me that has a problem with parentheses. It's not > hard to find developers that say that don't like Lisp because of the > parens. I think the question is whether we should make an effort to > appease those people. Clearly the majority of the people on this list > feel the answer is "no". > > > 2.) If you think it's a good idea why bother to ask for permission? > > I didn't ask for permission. I asked if others thought it was a good > idea. Most said "no". > > > Create your RMVClojure and release it to the world. If people think > > it's a good idea they'll adopt it. If not . . . well, they won't. > > There are, of course, downsides to forks but if you really feel that > > this would help adoption of Clojure, why ask for the permission of > > others? > > It wouldn't be a fork. It would be a simple preprocessor that would > use standard Clojure after the preprocessor runs. > > -- > 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 -~----------~----~----~----~------~----~------~--~---