Since you’re working st similar things in both languages, I’m curious how live coding based on Applicative, Monads for control flow, live bindings, etc, it changes the workflow compared to Supercollider. Is it a “safer” environment to do live coding? The contrary?
Yes, the experiment is comparative also, here Haskell and sclang. The result in the usual live coding is not so different, as far as I can see. What differs is the way you implement and extend each system. Haskell give you information what shape your basic values have to have, sclang just passes everything to the last instance. In both systems it is hard to understand semantic errors, because there is no type for them.
Yes, I thought about it too. I did an exercise for myself writing a scheme interpreter in Haskell. The types in the embedded language do not necessarily have a parallel in the host language. Although the host language gives you tools to do more things in this respect.
Also, error handling is very hard and tedious to do. But it would be possible to elegantly return a Nothing and give very good pieces of information back. So the program never crashes, which is particularly good in live coding.
There is a trade off between being wrong and being without preconceptions. Avoiding mistakes early on unfortunately means dealing with the constraints and overhead of the measures taken for it. And it is also not always clear whether it is better to learn how to use a system in which you can make mistakes or to adapt a system that takes away part of that responsibilty.
So, no, I don’t think it is clear what is better for live coding. Since it is essentially about changing your mind in the middle, the main thing is how that change is brought about and how it can have an effect on the programming system.
At least, I think an interpreter that does not crash whatever you throw at it (plus good error handling) is a way to even fine-tune the relationship you mentioned. I don’t know what’s best either.