Presentation Intro to D: What works?

rsw0x via Digitalmars-d digitalmars-d at puremagic.com
Fri Jun 26 00:10:03 PDT 2015


On Friday, 26 June 2015 at 07:00:22 UTC, thedeemon wrote:
> On Friday, 26 June 2015 at 04:43:08 UTC, Rikki Cattermole wrote:
>>>> Looks like I will give a talk about D to our local Functional
>>>> Programming User Group in August.
>
>> irk be careful when showing off ranges. Get some damn good 
>> background of what D is first. It took me well over a year 
>> before I started to get into them.
>
> For FP people working with combinators on lazy lists or 
> sequences is a well known thing, so they should easily 
> recognize it.
>
> People in OCaml, F# or Elm write code like this every day:
>
>  Char.toCode c |> spt |> List.reverse |> List.map toString |> 
> String.join " "
>
> (this one is in Elm)
>
> And in Haskell it looks similar but usually in backwards order 
> and separated by "." and $. For haskellers, comparing D ranges 
> with "classy prelude" shall be appropriate, I guess.
>
> I think one should also talk about how D ranges when passed 
> through several processing steps can keep important information 
> in their types so that xs.retro.take(100).map!f.retro[33] works 
> in O(1). This is what most other languages don't do.

I absolutely _hated_ laziness in Haskell. It made it impossible 
to reason about the performance of anything. I find it the 
complete opposite in D because so much happens at compiletime, 
I've seen ldc and gdc turn rather long range chains into assembly 
you'd expect from nested for loops.


More information about the Digitalmars-d mailing list