| >Why choose to carve out this added support for a single family > of algorithms rather than add in some more general > metaprogramming abilities that enable better EDSLs? It is The Swift Way™ The answer is always to add something to the language and the compiler, the question seems to be largely irrelevant. Of course, that's a consequence of not heeding Alan Kay's advice from 1998, that when you design a new
language, you need to focus on the metasystem first, the rest will follow. http://wiki.c2.com/?AlanKayOnMessaging When you don't do that, every new requirement comes as a surprise that you need to hack into the compiler somehow. Objective-C compatibility: hack the language; Python integration: hack the language; SwiftUI: hack the language; Differentiable Programming: hack the language. And of course, each additional hack makes the already not-to-elegant base language even more difficult for implementing stuff without hacking the language. What kind of a metasystem would we need in order to not have to hack the language for all of these features? That, detective, is the right question! https://www.youtube.com/watch?v=ZKxr0wyIic4 |