@technomancy @akkartik Not only that, but e.g. @racketlang goes all in on macros while only grudgingly tolerating the REPL and angrily spitting on image-based computing.
@bremner @technomancy @akkartik @racketlang
Racket makes a different engineering decision for its default REPL - and makes a good case for that decision to be the default - but it is possible to implement your own REPL in Racket, and I don’t believe that is true for many other languages.
@spdegabrielle @bremner @akkartik @racketlang can you elaborate? I can't think of any languages I've ever used that have a repl but don't allow you to construct a 3rd-party repl to replace it if you prefer

@technomancy @bremner @akkartik @racketlang

You can redefine the language e.g https://github.com/racket/racket/wiki/Redefine - there are even parameters such as compile-enforce-module-constants to change the behaviour of the module system.

https://docs.racket-lang.org/reference/eval.html#%28def._%28%28quote._~23~25kernel%29._compile-enforce-module-constants%29%29

Redefine

The Racket repository. Contribute to racket/racket development by creating an account on GitHub.

GitHub

@spdegabrielle @bremner @akkartik @racketlang aha, so you're talking about creating a whole new language, not actually about implementing a new repl

yeah, that's significantly easier in Racket but of course you can implement a compiler in nearly any language; it just usually takes more code because most languages' standard libraries don't include language-making functionality

@technomancy @bremner @akkartik @racketlang
Yes, but with racket macros you are not implementing a compiler, you are changing the intermediate layer of the compiler. See the video linked https://github.com/rfindler/modern-macros-talk
GitHub - rfindler/modern-macros-talk

Contribute to rfindler/modern-macros-talk development by creating an account on GitHub.

GitHub