unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
From: Mark H Weaver <mhw@netris.org>
To: Matt Wette <matt.wette@gmail.com>
Cc: guile-user@gnu.org
Subject: Re: A value for "nothing"
Date: Tue, 28 Aug 2018 02:58:37 -0400	[thread overview]
Message-ID: <87va7vyo2q.fsf@netris.org> (raw)
In-Reply-To: <31c7a870-aaf2-3f0e-2ef4-be4dc783a842@gmail.com> (Matt Wette's message of "Mon, 27 Aug 2018 17:50:14 -0700")

Matt Wette <matt.wette@gmail.com> writes:

> Is it reasonable to expect that if a value can be assigned to a variable
> then a predicate exists to test for that value type?  So, if
>
>   (define a (if #f #f))
>
> does not signal an error then there should be a predicate to indicate the
> value associated with a is unspecified?
>
> If the define allowed in RnRS?  I don't believe there is a predicate to
> test for this. (I could be wrong.)

In RnRS, (define a (if #f #f)) is allowed and guaranteed to assign
*some* object to 'a' without signalling an error.  However, it's not
specified what object will be assigned.  It could be 2 or (foo bar) or
"the cow jumps over the moon".

So, in RnRS, there's no predicate that you could apply to 'a' and be
assured that the result will be #t on all conforming implementations.

Guile has always had a predicate 'unspecified?' since at least 1996, but
personally I would advise against relying on its continued existence in
the future.

Regarding your question whether it's reasonable to expect that every
object has an associated predicate to test for it, I don't know.  It's
an interesting question, but I wonder what would be the practical use of
such an expectation?

Given the fact that there are several mechanisms to add new types that
are distinct from all other types, and that we occasionally add new core
types to Guile that no previously extant predicate would answer #t for,
you certainly cannot rely on being able to write a 'cond' statement that
tests an arbitrary object using some set of predicates and be assured
that at least one of those predicates will answer #t.  You could write
such a 'cond' statement today with that property, but for a future
version of Guile you might find an object for which none of those
predicates returns #t.

     Regards,
       Mark



  reply	other threads:[~2018-08-28  6:58 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-26 10:13 A value for "nothing" HiPhish
2018-08-26 17:21 ` Thomas Morley
2018-08-26 17:27 ` Joshua Branson
2018-08-26 17:49 ` John Cowan
2018-08-27  4:52   ` Mark H Weaver
2018-08-27 13:00     ` John Cowan
2018-08-27 21:29       ` Mark H Weaver
2018-08-27 21:32       ` Mark H Weaver
2018-08-26 20:07 ` Mark H Weaver
2018-08-26 22:08   ` Matt Wette
2018-08-27  8:04   ` tomas
2018-08-27 20:12     ` Mark H Weaver
2018-08-27 20:46       ` Mark H Weaver
2018-08-28  0:50         ` Matt Wette
2018-08-28  6:58           ` Mark H Weaver [this message]
2018-08-28 15:19             ` John Cowan
2018-08-28 15:38               ` Mark H Weaver
2018-08-28 15:59                 ` Mark H Weaver
2018-08-28 16:12                 ` John Cowan
2018-08-28 17:15                   ` Mark H Weaver
2018-08-28 19:07                   ` Mark H Weaver
2018-08-27 20:54       ` Hans Åberg
2018-08-27  0:17 ` Panicz Maciej Godek
2018-08-27  8:02   ` tomas
2018-08-27  8:29     ` Panicz Maciej Godek
2018-08-27  8:29   ` HiPhish
     [not found] ` <8840615.kRvQfVdCvZ@aleksandar-ixtreme-m5740>
     [not found]   ` <CAD2gp_QLqd=_RbF=HTEbCLp1onmUq-c74g0FXTvMgdz8JB4-8A@mail.gmail.com>
2018-08-27  8:24     ` HiPhish
     [not found] ` <3467110.H24gZIzStD@aleksandar-ixtreme-m5740>
     [not found]   ` <87ftz0vidc.fsf@netris.org>
2018-08-27  8:40     ` HiPhish
2018-08-27 12:37       ` Ludovic Courtès
2018-08-27 19:49         ` Mark H Weaver
2018-08-28  7:52           ` Ludovic Courtès
  -- strict thread matches above, loose matches on Subject: below --
2018-08-26 20:25 HiPhish
2018-09-13 21:49 HiPhish
     [not found] ` <CAD2gp_Sg-aDXZKfOcL-i2py7ne4c0Cp+2HvKS4DYi1Antm_B1A@mail.gmail.com>
2018-09-14 22:45   ` HiPhish
2018-09-15  0:26     ` John Cowan
2018-09-15 14:50       ` HiPhish
2018-09-15 18:28         ` Keith Wright
2018-09-15 21:50           ` Edwin Watkeys
2018-09-15 22:16             ` HiPhish
2018-09-15 22:23               ` Edwin Watkeys
2018-09-15 22:13           ` HiPhish
2018-09-15 22:45       ` David Pirotte

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87va7vyo2q.fsf@netris.org \
    --to=mhw@netris.org \
    --cc=guile-user@gnu.org \
    --cc=matt.wette@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).