comp.lang.ada
 help / color / mirror / Atom feed
From: Harald Korneliussen <vintermann@gmail.com>
Subject: Re: not null
Date: Fri, 6 Mar 2009 08:59:41 -0800 (PST)
Date: 2009-03-06T08:59:41-08:00	[thread overview]
Message-ID: <ffa23435-c854-4b6b-811b-b4a8e95a7280@t3g2000yqa.googlegroups.com> (raw)
In-Reply-To: 1so528ceh38jq$.uws9l96ursub.dlg@40tude.net

On Mar 6, 4:21 pm, "Dmitry A. Kazakov" <mail...@dmitry-kazakov.de>
wrote:
> On Fri, 6 Mar 2009 04:01:45 -0800 (PST), Harald Korneliussen wrote:
> > On Mar 4, 5:09 pm, Adam Beneschan <a...@irvine.com> wrote:
>
> >> I'm having difficulty understanding the point.  You have to have the
> >> idea of the lack of a reference.  How else would you implement a
> >> linked list abstraction?
>
> > You can use algebraic data types to do that in a type safe manner.
>
> No, you cannot, if safe = static. The nodes of the list have contracts to
> support certain operations. The only problem with null is that the virtual
> object corresponding to null does not fulfill the contract:

I don't understand your code example. But kind of like some Java
functions won't compile unless they're surrounded by an appropriate
try/catch block, you can make in Haskell a linked list get_next
function that causes the compiler to protest - at compile time,
naturally - if used in a context where the possibility of returning
Nothing (null) isn't considered.

(Embarrassingly enough, the built-in linked list of Haskell does not
do this, for historical reasons. Instead it uses the more old-
fashioned and unsafe way of throwing an exception, and unlike in Java
you don't have to  catch or explicitly say that you won't. But it's
easy to write a list that does it right)



  reply	other threads:[~2009-03-06 16:59 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-04 14:44 not null Georg Bauhaus
2009-03-04 14:56 ` Hyman Rosen
2009-03-04 15:22   ` Georg Bauhaus
2009-03-04 16:16     ` Adam Beneschan
2009-03-05 14:24       ` Georg Bauhaus
2009-03-05 16:07         ` Adam Beneschan
2009-03-06  1:07       ` Hibou57 (Yannick Duchêne)
2009-03-04 16:09   ` Adam Beneschan
2009-03-04 20:38     ` Dmitry A. Kazakov
2009-03-05  1:54       ` Adam Beneschan
2009-03-05  8:42         ` Dmitry A. Kazakov
2009-03-05  1:32     ` Brian Drummond
2009-03-05  1:47       ` Adam Beneschan
2009-03-05 11:32         ` Brian Drummond
2009-03-05 15:06           ` Dmitry A. Kazakov
2009-03-05 13:57         ` Georg Bauhaus
2009-03-05 19:53       ` Jack Mitchell
2009-03-05  8:49     ` Jacob Sparre Andersen
2009-03-05 16:10       ` Adam Beneschan
2009-03-05 17:20         ` Jacob Sparre Andersen
2009-03-06  1:04     ` Hibou57 (Yannick Duchêne)
2009-03-06 12:01     ` Harald Korneliussen
2009-03-06 12:43       ` Jacob Sparre Andersen
2009-03-06 13:05         ` Harald Korneliussen
2009-03-06 15:21       ` Dmitry A. Kazakov
2009-03-06 16:59         ` Harald Korneliussen [this message]
2009-03-06 17:48           ` Dmitry A. Kazakov
2009-03-06 20:05             ` Georg Bauhaus
2009-03-06 21:31               ` Dmitry A. Kazakov
2009-03-04 16:19   ` Robert A Duff
2009-03-04 20:39 ` Colin Paul Gloster
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox