[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Chicken-hackers] The use of the null-pointer and null-pointer? procedur
From: |
Peter Bex |
Subject: |
[Chicken-hackers] The use of the null-pointer and null-pointer? procedures |
Date: |
Tue, 10 May 2011 15:01:13 +0200 |
User-agent: |
Mutt/1.4.2.3i |
Hi!
I was wondering what use does (null-pointer?) has.
The FFI conversion procedures for c-pointer types already return #f for
NULL pointers, so I don't really see how one could get a null-pointer.
I know there's also the (null-pointer) procedure, but I don't see the
use of that, either, considering the c-pointer conversion procedures
already convert #f to NULL the other way around, too.
It looks like we have two ways to represent the same thing, which seems
a bit redundant. Also, it's confusing as I've seen mistakes like the
following:
(let ((obj (some-foreign-lambda-that-returns-a-pointer)))
(when (null-pointer? obj) (cleanup!) (error "something went wrong"))
obj)
The above code will generally just work, UNTIL you get a NULL
pointer. Then you get an error, but not the one you'd expect:
Error: (null-pointer?) bad argument type - not a pointer-like object: #f
And of course, the cleanup! procedure is *not* run.
Would it be a good idea to deprecate these procedures?
Cheers,
Peter
--
http://sjamaan.ath.cx
--
"The process of preparing programs for a digital computer
is especially attractive, not only because it can be economically
and scientifically rewarding, but also because it can be an aesthetic
experience much like composing poetry or music."
-- Donald Knuth
- [Chicken-hackers] The use of the null-pointer and null-pointer? procedures,
Peter Bex <=