On Sunday, 1 May 2022 at 20:39:36 UTC, Max Samukha wrote:
>On Sunday, 1 May 2022 at 08:14:34 UTC, Walter Bright wrote:
>Of interpreters that later generated native code. Not the other way around.
I don't quite understand why you insist on native code. Do compilers to bytecode count? There used to be a language called Nemerle (https://en.wikipedia.org/wiki/Nemerle), which had been mentioned on these forums many times, long before D got CTFE. The earliest mention I found is https://forum.dlang.org/post/ca56h1$2k4h$1@digitaldaemon.com. It had very powerful macros, which could be used as compile time functions, AST macros, and whatnot. The language is now dead because it was too good for humans.
...
I think Nemerle deserves a case of beer.
Does writing a compile time function require any new knowledge/skill or is it like writing a runtime function? Accurately answering "they're like any other function, use functions in either context and you'll be fine" means you've got something immediately useful to newcomers, an ultra low friction path to more power.
Answering "no, but we have super duper xyz which is every bit as powerful theoretically and should probably be preferred because it's hard for people to understand and qualifies you for your programming wizard merit badge", means you, as a language designer, did not understand what you could have had.
Unless I'm missing something big from the Nemerle wiki page those language designers did not understand what they could have had.
I'm happy to give credit where it is due but I'd advise hanging on to that beer in this case. :-)