Hacker News new | ask | show | jobs
by nnq 2403 days ago
> Julia seems like a much better target for this

Exactly, at least from an outside perspective, why tf?! It seems like people love so much bolting stuff to "classic, conservative" languages that they do it even if it's 10x more work than doing it in a language already having full fledged mature real macros. And this is not Common Lisp we're talking about... Julia is a pretty "normal" language that wouldn't scare anyone off!

(EDIT+: though, as a software engineer primarily, I do have a slight personal preference for more classic single-dispatchy languages like Swift... I imagine that in general it's some king of Stockholm-syndrome we developers experience :P)

3 comments

Julia seems to be making good progress on this front anyways :) https://github.com/FluxML/Zygote.jl
> classic single-dispatchy languages like Swift

Is C++ not classic enough these days?

Hard to categorize C++. The base object system is single dispatch, but the way you use the STL is multiple dispatch.
You can overload any function in c++. It's multiple dispatch.
Multiple dispatch is a little more than just overload. In C++ if you have a base class Animal with two derived Dog and Cat, and you have an Animal * pointer to Dog or Cat and do animal->walk() it will dispatch to either the Dog or Cat method (single dispatch). If you do animal->meet(animal) it will dispatch to either dog.meet(Animal * ) or cat.meet(Animal * ), not dog.meet(Dog * ) or cat.meet(Cat * ) like multiple dispatch languages do. You need a visitor pattern in C++ (or apparently templates) to get double dispatch:

https://en.wikipedia.org/wiki/Visitor_pattern#C++_example

> "classic, conservative"

Very odd to see these words used in conjunction with a modern language like Swift.