guile-user
[Top][All Lists]

## Re: design advice on predicate name

 From: Neil Jerram Subject: Re: design advice on predicate name Date: Sat, 19 Aug 2006 11:37:22 +0100 User-agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux)

> "Neil Jerram" wrote:
>>>   Example: I have two predicates HIT-NAN? and MAP-NAN?
>>> which one it is better to call NAN?
>>
>>I'm afraid I don't understand.  Perhaps you could write
>>the down for the two possibilities that you have in mind.
>
> For a vector of real numbers like this [1 +nan.0 3]:
>
> * hit-nan? returns #t because at least one element
>   is nan;
>
> * map-nan? returns #(#f #t #f), one boolean for each
>   element;
>
> the same for matrices. map-nan? works like the 'isnan'
> function of GNU Octave, which for the example vector
> would return [0 1 0].
>
>   hit-nan? can be used in the conditional of IF and
> COND, while map-nan? must be inspected. For this reason
> I guess that hit-nan? should be the nan?, but, to the
> best of my knowledge, GNU Octave defines only the map-nan?
> equivalent so I do not know how useful can be hit-nan?
> in practice.

Thanks for explaining.  My intuition is that the NAN? name should be
used only for a procedure which takes a single number and reports
whether it is NAN or not (as #t/#f).

For your `hit-nan?' procedure I would use the name `contains-nan?' or
`any-nan?'.  But on the other hand, if `hit-nan?' is the name that
first occurred to you, why not stick with it?  For your `map-nan?'
procedure I would use `map-nan?', as you have done.

Is it a feature of Octave that any predicate can automatically map
over a vector, or can `isnan' only be applied to a vector?

Regards,
Neil