Rich_Morin

Rich_Morin

I just finished reading Hell Is Other REPLs in Colin Okay’s SAVE-LISP-OR-DIE series. It’s an interesting look at Common Lisp, with perceptive comparisons to various other languages.

The article closes with this summary, making me wonder how IEx compares to the Common Lisp REPL:

… true interactive development is programming such that

  1. your program never crashes
  2. because it enters an interactive debugger
  3. where you never lose program state
  4. unless you choose to do so
  5. after a thorough inspection of state
  6. including the call stack
  7. and after you have tinkered, recompiled functions, and edited objects
  8. and after you have tried restarting the computation
  9. all while the live program is running, possibly remotely.

AFAIK, IEx supports most (if not all) of this. However, I don’t feel qualified to make a detailed assessment. I’d also be interested to hear folks’ thoughts on REPL capabilities and features that the list doesn’t mention.

Would anyone like to offer some clues and/or comments?

Showing Posts 1 to 8

marciol

marciol

One thing I miss from Ruby is something like Ruby Pry Rescue

There is an awesome presentation, and at this point, he explains how you can use it to just catch any error and fix it dynamically, as one can do in CL.

crispinb

crispinb

Having played with Clojure enough last year to be mildly dangerous (as I am now with Elixir!), the biggest thing which jumps out at me is more tool ergonomics than fundamentals. The Clojure REPL (similarly to other LISPS) is typically linked directly to your editor, such that you can hit a keystroke and instantly eval any changes into the running application, with output into the editor buffer (either as a transient overlay for info, or to a comment for further use). It’s hard to explain how smoothly interactive this makes the development process feel.

mattmower

mattmower

I really missed this coming to Elixir. I’m not sure if it just hasn’t been implement yet or if there’s something about Elixir/BEAM that precludes it.

crispinb

crispinb

I don’t know either, but if you look at the scope of nRepl, CIDER etc, it’s a lot of work!

ityonemo

ityonemo

The up arrow should remember multiline input for goodness sake.

Go use Julia, and type this:

julia> function add(x, y)
   x - y
end
julia> add(4, 3)

Now, go back and edit the add function to fix it. It’s straightforward.

It is not so in elixir (or python, or ruby, so we’re not alone but that is no excuse to not do better).

Also, I kind of want naked functions in the repl context. That’s probably too much to ask but it could be done by having a “IEx.Repl” module that is “imported” into the context and the def macro in the IEx scope triggers a recompilation of this module

Rich_Morin

Rich_Morin OP

I’m happy to see that we’re getting some interesting suggestions. Assuming that nobody brings up any show-stopper objections, please consider turning these ideas into formal issues for IEx.

StephanLehmke

StephanLehmke

Elixir interaction mode for emacs would certainly be appreciated.

I never ever used the native shell of any programming language if there was a corresponding emacs mode available.

Oops – there seems to be Alchemist, so I’ll check that out…

cjbottaro

cjbottaro

That would be so awesome. I work around it by using clipboard history/manager.

I’m super glad they recently allowed pipelining without requiring parens.

If we’re making requests, I would like a dynamic prompt. Seems easy to allow an anonymous function as a prompt, rather than an interpolated string. Use case is we have a multi-tenanted app and it would be nice to see what tenant you’re set to in the prompt:

iex(1)> Tenant.set("foo")
iex(1)[foo]> Tenant.set("bar")
iex(1)[bar]> 
— All posts loaded —

Where Next? Top

Trending in Discussions Top

cblavier
Hey there, It’s been more than a year since we started using LiveView as our main UI library and building a whole library of UI componen...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
New
budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New
achempion
I’ve been using Emacs as my main code editor for more than a two years. It’s a custom build version although I’ve tried doom emacs and sp...
New
axelson
Hi there! :wave: @frigidcode and I (but mostly him) have been running an Elixir Book club, we’re almost done with Designing Elixir Syste...
New
budgie
I love Elixir. It’s one of 2 programming languages I’ve ever fallen in love with. But I don’t use it anymore. Serverless was the promis...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
mcass19
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
georgeguimaraes
Just published claude-code-elixir, a plugin marketplace for Claude Code with Elixir support. These are the plugins I’ve been using for my...
New
Dmk
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews