Hacker News new | comments | show | ask | jobs | submit login

REPL-driven development is wonderful. I'm not a Clojure user (yet), but I write a lot of Scheme. My programs are living creatures that adapt and evolve as they are running. It's refreshing to see that Clojure is seeing real use in the industry. Gives me hope that I can get paid to work with a language I really enjoy some day.



I'm a bit curious about your comment. Do you mean during development you run your code on a REPL and change portions of it , or do you mean you run code in Production in a REPL and change portions of it as it's running?

I'm interested to know your setup in either of those cases. The one inconvenience I have about REPL based development is that I need to copy over an expression from my editor into the REPL and if I make any changes in the REPL, like fix a typo, I need to make sure to copy it back to my editor.I guess this may be because I don't use Emacs and have an editor and REPL in one.


REPL Driven development as it's called is really yes having your whole system running at your thingertips (even production for the adventurous). You can execute arbitrary code and get results or see what state has changed. You can also redefine anything (in Clojure at least) that is referred to, such as functions and variables (I use these terms loosely here).

Normally you have your IDE configured so that anything executed is executed in the context of the running REPL session. So there should be no need to copy/paste.

When done properly with tests running on every change you really can't, as a developer, get any quicker feedback. It's brilliant and empowering!

Your issue could be emacs but, for Clojure at least, there is the Cursive Intellij plugin which is now definitely usable. Also there are the brand new IDEs like LightTable.

LightTable.com started out with some very different ideas with regards to code organisation and there is still a lot of potential work there. But lighttable instead became open source and a core for plugins. The plugins now range from rainbow parentheses to 'pick your language' evaluation.

If you want to discuss any of these ideas or others please do or PM me. I'm always willing to discuss as my girlfriend is hopeless. But then for everything not programming she keeps me sane.


My setup involves GNU Guile Scheme, Emacs, and the geiser extension for Emacs. I boot up my Guile application and it spawns a REPL server. In Emacs, I run M-x connect-to-guile to connect to that server. From there, I edit my source code files as normal. However, once I've made an edit, I press C-x C-e next to the region of code that I want Emacs to send to the Guile REPL and view the results. The edit/apply process repeats until I'm done working and kill the application.

It's a really great way to work. I've spent a good amount of time making this workflow work well for applications that run an event loop, such as a game or web server, by writing a "cooperative" REPL server for Guile [0].

I hope this makes some sense!

[0] https://gnu.org/software/guile/manual/html_node/Cooperative-...




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: