Article: Writing Julia style multiple dispatch code in D

data pulverizer via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Thu Aug 24 13:11:32 PDT 2017


On Thursday, 24 August 2017 at 18:16:21 UTC, jmh530 wrote:
> I think at one point I had actually suggested that dstats or 
> something be re-written in a Julia-like way (before I realized 
> how much work that would be!). It looks very pretty.

Thanks. I think most of that is down to D's nice syntax and how 
it easily and clearly emulates Julia. I think that there is 
certainly more to say on this especially around strategies of how 
represent concrete types. David Gileadi's point about UDAs could 
add an interesting spin on things, and Ali's point on dynamic 
dispatching.

> Nevertheless, you might be re-inventing the wheel a bit if you 
> want to build a whole library in this style.

True. I have found a couple of projects that fresh targets that I 
am working on and writing code in this style.

> My recommendation would be to write a front-end for the 
> dstats.distrib and dstats.random submodules in this style. That 
> way you won't need to re-write all the functions, you can just 
> call ones from dstats that have already been tested.

True code reuse is important, especially when you want to get 
something working quickly.

> More generally, I prefer the structs because they don't rely on 
> the garbage collector, but the class/interface version is 
> prettier.

Aha! I was wandering why I see people avoid classes even when 
using them is clearly the best way to represent their objects. 
For some reason it never occurred to me that they where just 
trying to avoid the GC. I just thought they didn't want to use 
reference objects.

> Atila's concepts library has implements, which you might find 
> helpful. I have gently nudged him to work on something that 
> also can tell if a type is a subtype of another type more 
> generally (like a struct being a subtype of another struct). I 
> think this would really be a good use case for that 
> functionality.

I was thinking about this article for some time, it was Atila's 
article 
(https://atilanevesoncode.wordpress.com/2017/08/23/on-the-novelty-factor-of-compile-time-duck-typing/) that was a trigger for me writing it.



More information about the Digitalmars-d-announce mailing list