1. 20
  1.  

  2. 6

    However, appeals to how e.g. lisps provide some kind of unique advantage in interactive development are wildly overstated (and I say this as a former advocate of such practices).

    Anyone who has used a Forth can confirm that the “person interacting with running program” model is by no means unique to lisps. There are also several other non-lisp languages that have no technical barrier to accomplishing this mode of operation, but typically do not do so solely for cultural reasons; Ruby and Lua in particular come to mind. Then you have systems like Erlang that go far beyond what any lisp can do in terms of rolling out changes to production systems live without a restart, and literally keeping both the old and new version running simultaneously in the same program until the old version is safe to abandon.

    It’s also weird that the “On repl-driven programming” article describes a property of “lisps” that as far as I know, no lisp in the world other than CL supports:

    Define a datatype. I mean a class, a struct, a record type–whatever user-defined type your favorite language supports. Make some instances of it. Write some functions (or methods, or procedures, or whatever) to operate on them. Now change the definition of the type. What happens? Does your language runtime notice that the definition of the type has changed?

    Clojure is notoriously bad at this with the way defrecord instances can persist attached to definitions of the record class that no longer exist, and outdated instantiations will be visually indistinguishable from previous ones but behave differently!

    1. 2

      Anyone who has used a Forth can confirm that the “person interacting with running program” model is by no means unique to lisps. There are also several other non-lisp languages that have no technical barrier to accomplishing this mode of operation, but typically do not do so solely for cultural reasons; Ruby and Lua in particular come to mind.

      I haven’t tracked down the details, but I’ve heard that Wind River managed to make “interacting with a running program” work in C on their VxWorks operating system.

      1. 1

        The shell has a bundled C interpreter.

      2. 1

        As a js developer with hot reload (maintaining state), & chrome dev tools to inspect practically everything & even usually be able to pry into component level state either with a extension or knowing a little bit about framework internals.. what does clojurescript / friends have that im missing?

        1. 2

          The same workflow for ANY program!

          (edit: thinking CL, not necessarily ClojureScript)

          1. 2

            Fair!