An update on Dart macros and data serialization
11–20 of 125 posts
Re: An update on Dart macros and data serialization
#12Why is it that Lisp family macros are easy to implement and use, but not so in other languages?
Re: An update on Dart macros and data serialization
#13Former Eng. Dir for Dart, co-founder of Flutter, here. I'd like to believe this is a good thing for the Dart project, but only time will tell. My hot take here: https://shorebird.dev/blog/dart-macros/
Re: An update on Dart macros and data serialization
#14Why is it that Lisp family macros are easy to implement and use, but not so in other languages?
Re: An update on Dart macros and data serialization
#15Re: An update on Dart macros and data serialization
#16Why is it that Lisp family macros are easy to implement and use, but not so in other languages?
Are Lisp macros easy to use? My understanding was that Lisp code is notoriously difficult to understand if you didn't write it, largely because of the obscenely powerful macro system that makes it too easy to be too clever. Which is essentially the same complaint that everyone has about every macro system.
Re: An update on Dart macros and data serialization
#17Without investing significant time, like they did with Dart, they would have a language with a much bigger ecosystem that is faster, already has compile time code generation and better support for data than Dart. It supports ahead-of-time compilation and hot-reload. The only feature missing in C# is compilation to JS, but with WASM is that really needed? Biggest downside of C# is probably that it's not invented at Google.
Re: An update on Dart macros and data serialization
#18Why is it that Lisp family macros are easy to implement and use, but not so in other languages?
in Scheme you can redefine `define` to be number 5. Easy to implement, but a nightmare in real world scenarios [0]. That's why languages like Go became popular, they're trashy, boring, and dumb, but that's exactly what's needed in big projects. [0]: imagine your colleague wrote a macro that redefines for loops because at the time, it made life easier for him.
This is like asking "what if your coworker named all errs as `ok`" so everything was `if ok { return errors.New("Not ok!!"); }`. It's possible but no one does it.
This is why `defmacro` and `gensym` in common lisp are awesome, and similarly why Go's warts don't matter. Much of programming language ugliness is an "impact x frequency" calculation, rather than one or the other.
It's also why javascript is so terrible, you run into it's warts constantly all day long.