+1. My project has a shell on top of a repl, which is just load in a different namespace and associated functions and macros.
This assumes that your shell language is an extension of Clojure / LISP, which is certainly the path I chose. I replaced a customed DSL I designed in Java, using SableCC. Incidentally, I was able to pull in the SableCC library and use my custom language on top of the repl, exactly as you describe. The lexer (waiting for user input) was using a PushbackReader. But I imagine you can use anything that does a blocked read on stdin. But in the end, I realised that a few custom Clojure functions and macros pretty much covered what my DSL was doing. So now my "shell" is just a namespace inside of a repl. HTH Tim On Tue, Sep 20, 2011 at 2:08 PM, Ken Wesson <kwess...@gmail.com> wrote: > Wouldn't the simplest way be to simply use the REPL itself as the > shell, with a few things defined like this? > > (def dir (atom (System/getProperty "user.home"))) > > (defn pwd [] @dir) > > (defn cd [dir] (reset! @dir dir)) > > (defn ... ) > > -- > Protege: What is this seething mass of parentheses?! > Master: Your father's Lisp REPL. This is the language of a true > hacker. Not as clumsy or random as C++; a language for a more > civilized age. > > -- > 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 > Note that posts from new members are moderated - please be patient with > your first post. > 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 > -- 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 Note that posts from new members are moderated - please be patient with your first post. 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