Without breakloop not much of a REPL

167 views
Skip to first unread message

SideStep

unread,
Jan 29, 2021, 2:09:59 PM1/29/21
to Clojure

According to this post: https://mikelevins.github.io/posts/2020-12-18-repl-driven/

Breakloop is a true differentiator for "real" REPLs. I can see how breakloop really is a game changer.

Also, there is no breakloop in modern languages such as clojure, which is heralded for it's REPL driven development, craftsmans' playground, live coding etc...

Is breakloop gone from modern REPL languages? Maybe it's not a big deal? Or is it?

Brandon R

unread,
Jan 29, 2021, 6:05:16 PM1/29/21
to clo...@googlegroups.com
I believe what's described in that post is possible in Clojure, at least to an extent. I can't remember where I saw it described, but I think it was a talk by Stuart Halloway. IIRC you can configure Clojure to run clojure.main/repl when an exception is thrown, this puts you into a new sub repl with the lexical bindings at that point in execution. You can inspect things here and I believe change things. I'm not sure about continuing running with new values, but I'm guessing that's possible too.

Maybe someone in this group can point to a good resource about this, as I didn't find it in a quick search.

--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@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+u...@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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/clojure/6cbcc0e9-c8d6-42b1-a1ae-3d3b88fcdfb6n%40googlegroups.com.

Brandon R

unread,
Jan 29, 2021, 6:21:52 PM1/29/21
to clo...@googlegroups.com
This may be the talk I was thinking of: https://vimeo.com/223309989

Nesvarbu Nereikia

unread,
Feb 1, 2021, 12:28:59 PM2/1/21
to clo...@googlegroups.com
Thanks Brandon, what a productivity booster the breakloop wold be, huh? Basically would save you time and mental energy every time you sprinkle your code with print statements now.


On Friday, January 29, 2021, Brandon R <brando...@gmail.com> wrote:
This may be the talk I was thinking of: https://vimeo.com/223309989

On Fri, Jan 29, 2021 at 10:04 AM Brandon R <brando...@gmail.com> wrote:
I believe what's described in that post is possible in Clojure, at least to an extent. I can't remember where I saw it described, but I think it was a talk by Stuart Halloway. IIRC you can configure Clojure to run clojure.main/repl when an exception is thrown, this puts you into a new sub repl with the lexical bindings at that point in execution. You can inspect things here and I believe change things. I'm not sure about continuing running with new values, but I'm guessing that's possible too.

Maybe someone in this group can point to a good resource about this, as I didn't find it in a quick search.

On Fri, Jan 29, 2021 at 6:09 AM SideStep <nesvarb...@gmail.com> wrote:

According to this post: https://mikelevins.github.io/posts/2020-12-18-repl-driven/

Breakloop is a true differentiator for "real" REPLs. I can see how breakloop really is a game changer.

Also, there is no breakloop in modern languages such as clojure, which is heralded for it's REPL driven development, craftsmans' playground, live coding etc...

Is breakloop gone from modern REPL languages? Maybe it's not a big deal? Or is it?

--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@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

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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscribe@googlegroups.com.

--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@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+unsubscribe@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 a topic in the Google Groups "Clojure" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/clojure/Q1NQU8M17qc/unsubscribe.
To unsubscribe from this group and all its topics, send an email to clojure+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/clojure/CAB_6y6GsPfkRXWXrwrE6gHaCXr7hJxFK1zXBYp%3Dh5DRD7mFkrw%40mail.gmail.com.

Andy Fingerhut

unread,
Feb 1, 2021, 2:44:43 PM2/1/21
to clo...@googlegroups.com
There is no reason to merely imagine ... you can do it today.

Here is a transcript of Stuart Halloway's "REPL-Driven Development" talk with links to sources that he mentions: https://github.com/matthiasn/talk-transcripts/blob/master/Halloway_Stuart/REPLDrivenDevelopment.md

The part of that talk where he discusses a break facility in the REPL can be found by searching that transcript for "Joy of Clojure", the book where one implementation of this is given.

There is a link in the transcript to this repository, which has code you can copy and paste into your own project, or utility library, etc.


The source for the macro named `contextual-eval` is here: https://github.com/joyofclojure/book-source/blob/master/first-edition/src/joy/macros.clj

Andy

On Mon, Feb 1, 2021 at 4:28 AM Nesvarbu Nereikia <nesvarb...@gmail.com> wrote:
Thanks Brandon, what a productivity booster the breakloop wold be, huh? Basically would save you time and mental energy every time you sprinkle your code with print statements now.

On Friday, January 29, 2021, Brandon R <brando...@gmail.com> wrote:
This may be the talk I was thinking of: https://vimeo.com/223309989

On Fri, Jan 29, 2021 at 10:04 AM Brandon R <brando...@gmail.com> wrote:
I believe what's described in that post is possible in Clojure, at least to an extent. I can't remember where I saw it described, but I think it was a talk by Stuart Halloway. IIRC you can configure Clojure to run clojure.main/repl when an exception is thrown, this puts you into a new sub repl with the lexical bindings at that point in execution. You can inspect things here and I believe change things. I'm not sure about continuing running with new values, but I'm guessing that's possible too.

Maybe someone in this group can point to a good resource about this, as I didn't find it in a quick search.

On Fri, Jan 29, 2021 at 6:09 AM SideStep <nesvarb...@gmail.com> wrote:

According to this post: https://mikelevins.github.io/posts/2020-12-18-repl-driven/

Breakloop is a true differentiator for "real" REPLs. I can see how breakloop really is a game changer.

Also, there is no breakloop in modern languages such as clojure, which is heralded for it's REPL driven development, craftsmans' playground, live coding etc...

Is breakloop gone from modern REPL languages? Maybe it's not a big deal? Or is it?

--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@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

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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com.

--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@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

For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to a topic in the Google Groups "Clojure" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/clojure/Q1NQU8M17qc/unsubscribe.
To unsubscribe from this group and all its topics, send an email to clojure+u...@googlegroups.com.

--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@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

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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/clojure/CAG-Cp9X9xhBv_yHrXZMM-%3DSpRiU4TEi7__OXRqSU%3DW00OSJ9iw%40mail.gmail.com.
Reply all
Reply to author
Forward
0 new messages