3 ms·
It would be nice to get an example of how this wonderful REPL does all the cool things mentioned. In fact Haskell has a decent REPL, and you can (if you really
by Y_Y 5y ago
It would be nice to get an example of how this wonderful REPL does all the cool things mentioned.
In fact Haskell has a decent REPL, and you can (if you really want to) explicitly allow IO outside the IO Monad, or skip the type checker, though I find them more of a moral compass than an impressive dictat. I don't know if you can crash straight to the debugger like in common lisp though.
- CraigJPerry 5y agoA cool example: https://youtu.be/3HxVMGaiZbc?t=1783 https://youtu.be/3HxVMGaiZbc?t=1783 But better to just block 5 mins in your calendar and try it: https://github.com/PEZ/rn-rf-shadow https://github.com/PEZ/rn-rf-shadow Don't play with this if you like hot-reload or hot-refresh features in react or jrebel or whatever. You will forever see these other approaches as lame in comparison... speaking from someone who was previously very happily ignorant, living my best life on the JRebel side of the fence.
- throwaway73847 5y agoDon't let the 2005 date fool you. https://yewtu.be/watch?v=_B_4vhsmRRI https://yewtu.be/watch?v=_B_4vhsmRRI
- zetalyrae 5y agoNicolas Hafner[0], a prolific Common Lisp open-source developer, has been streaming the development of his adventure platformer Kandria[1] on YouTube: https://www.youtube.com/watch?v=DjjT7Fjh0Kk&list=PLkDl6Irujx9NUeqnEkRsFZ6bLS24B-6lT https://www.youtube.com/watch?v=DjjT7Fjh0Kk&list=PLkDl6Irujx... It's pretty cool to see music, graphics, and game behaviour change live in response to code entered into the REPL. [0]: https://shinmera.com/ https://shinmera.com/ [1]: https://github.com/Shinmera/kandria https://github.com/Shinmera/kandria
- Tarean 5y agoYou can run your program in the repl and :set -fbreak-on-error . You can get stack traces with access to variables via :set trace, but because of optimizations and lazy evaluation they are similarly jumbled as async code debugging. Haskell has some nice advantages like `:r` for reloading, similarly you can reload a dynamically linked binary and the old version is only unlinked after all references to it are gone. There is a significant difference to dynamic languages, though, because having different versions in memory leading to incompatible types would be a lot more common with a partial reloading workflow.
- bjoli 5y agoNow, this is the clojure repl which is not as nice, but I usually show people this: https://vimeo.com/230220635 https://vimeo.com/230220635 That does stay on the happy path, though, and CL has a much better REPL experience with regards to debugging.