Null references redux

language_fan foo at bar.com.invalid
Mon Sep 28 15:51:37 PDT 2009


Mon, 28 Sep 2009 22:33:26 +0000, language_fan thusly wrote:

> Value types can be incorrectly initialized and nobody notices. E.g.
> 
>   int min;
> 
>   foreach(int value; list)
>     if (value < min) min = value;

> Now I can tell you, in functional languages there is no other way. All
> initializations have to be correct, they are final, they are constants
> and they can be initialized incorrectly. But there are some tools that
> help in this. Functions can be automatically tested. Invariants, pre-
> and post-conditions can be set. Still, I can even bet they are much
> safer than D in every possible way. How is this possible?

For instance if I use the example given above, I write it like this in a 
functional language:

find_min:: Ord a => [a] -> Maybe a
find_min [] = Nothing
find_min (h:t) = Just $ foldl min h t

You can then use quickcheck to verify the result in some fancy way.

I just cannot think of any way how you could crash programs written in 
this way. They are solid as a rock.



More information about the Digitalmars-d mailing list