all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* Arguing for a nilp function and where to put it
@ 2023-04-01  5:37 Pedro Andres Aranda Gutierrez
  2023-04-01  6:01 ` tomas
                   ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: Pedro Andres Aranda Gutierrez @ 2023-04-01  5:37 UTC (permalink / raw)
  To: emacs-devel

Use case for a nilp function:

I have a buffer-local variable with a default value, and I want to
allow to (silently) set it to nil (and only to nil) from
.dir-locals.el or Local Variables.

Currently I have

(defun nilp(v) (unless v t))

and I use it with

(put '<variable> 'safe-local-variable #'nilp)

which is much cleaner than

(put '<variable> 'safe-local-variable (lambda (p) (unless p t)))

every time I need it. I think other people may benefit from having
this simple function as part of Emacs and I'm not sure whether the
elisp form would be better than something more lower level like
integerp and in which file it would reside best.

/PA
-- 
Fragen sind nicht da um beantwortet zu werden,
Fragen sind da um gestellt zu werden
Georg Kreisler

Headaches with a Juju log:
unit-basic-16: 09:17:36 WARNING juju.worker.uniter.operation we should
run a leader-deposed hook here, but we can't yet



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Arguing for a nilp function and where to put it
  2023-04-01  5:37 Arguing for a nilp function and where to put it Pedro Andres Aranda Gutierrez
@ 2023-04-01  6:01 ` tomas
  2023-04-01  6:07 ` Michael Albinus
  2023-04-01  6:10 ` Eli Zaretskii
  2 siblings, 0 replies; 13+ messages in thread
From: tomas @ 2023-04-01  6:01 UTC (permalink / raw)
  To: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 629 bytes --]

On Sat, Apr 01, 2023 at 07:37:44AM +0200, Pedro Andres Aranda Gutierrez wrote:
> Use case for a nilp function:
> 
> I have a buffer-local variable with a default value, and I want to
> allow to (silently) set it to nil (and only to nil) from
> .dir-locals.el or Local Variables.
> 
> Currently I have
> 
> (defun nilp(v) (unless v t))

If I understand your needs correctly, the function you are
looking for is called `null'.

Yes, it breaks the convention for predicates (i.e. that they
should end in -p), but I think it's just because it has been
there for so long, like an old olive tree :-)

Cheers
-- 
t

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Arguing for a nilp function and where to put it
  2023-04-01  5:37 Arguing for a nilp function and where to put it Pedro Andres Aranda Gutierrez
  2023-04-01  6:01 ` tomas
@ 2023-04-01  6:07 ` Michael Albinus
  2023-04-01  6:10 ` Eli Zaretskii
  2 siblings, 0 replies; 13+ messages in thread
From: Michael Albinus @ 2023-04-01  6:07 UTC (permalink / raw)
  To: Pedro Andres Aranda Gutierrez; +Cc: emacs-devel

Pedro Andres Aranda Gutierrez <paaguti@gmail.com> writes:

Hi Pedro,

> Use case for a nilp function:
>
> I have a buffer-local variable with a default value, and I want to
> allow to (silently) set it to nil (and only to nil) from
> .dir-locals.el or Local Variables.
>
> Currently I have
>
> (defun nilp(v) (unless v t))
>
> and I use it with
>
> (put '<variable> 'safe-local-variable #'nilp)
>
> which is much cleaner than
>
> (put '<variable> 'safe-local-variable (lambda (p) (unless p t)))
>
> every time I need it. I think other people may benefit from having
> this simple function as part of Emacs and I'm not sure whether the
> elisp form would be better than something more lower level like
> integerp and in which file it would reside best.

There is the `null' function, which is what you need.

> /PA

Best regards, Michael.



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Arguing for a nilp function and where to put it
  2023-04-01  5:37 Arguing for a nilp function and where to put it Pedro Andres Aranda Gutierrez
  2023-04-01  6:01 ` tomas
  2023-04-01  6:07 ` Michael Albinus
@ 2023-04-01  6:10 ` Eli Zaretskii
  2023-04-01  7:09   ` Pedro Andres Aranda Gutierrez
  2 siblings, 1 reply; 13+ messages in thread
From: Eli Zaretskii @ 2023-04-01  6:10 UTC (permalink / raw)
  To: Pedro Andres Aranda Gutierrez; +Cc: emacs-devel

> From: Pedro Andres Aranda Gutierrez <paaguti@gmail.com>
> Date: Sat, 1 Apr 2023 07:37:44 +0200
> 
> Use case for a nilp function:
> 
> I have a buffer-local variable with a default value, and I want to
> allow to (silently) set it to nil (and only to nil) from
> .dir-locals.el or Local Variables.
> 
> Currently I have
> 
> (defun nilp(v) (unless v t))
> 
> and I use it with
> 
> (put '<variable> 'safe-local-variable #'nilp)
> 
> which is much cleaner than
> 
> (put '<variable> 'safe-local-variable (lambda (p) (unless p t)))
> 
> every time I need it. I think other people may benefit from having
> this simple function as part of Emacs and I'm not sure whether the
> elisp form would be better than something more lower level like
> integerp and in which file it would reside best.

Why cannot you use the existing function 'null'?

If 'null' doesn't fit the bill, please explain why.



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Arguing for a nilp function and where to put it
  2023-04-01  6:10 ` Eli Zaretskii
@ 2023-04-01  7:09   ` Pedro Andres Aranda Gutierrez
  2023-04-02 21:28     ` Roland Winkler
  2023-04-03  3:02     ` Richard Stallman
  0 siblings, 2 replies; 13+ messages in thread
From: Pedro Andres Aranda Gutierrez @ 2023-04-01  7:09 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Hi Eli,

it might be that sometimes I'd like a bit more of logic...

When you want to check if a variable is an integer, you use integerp,
when you want to check if a variable is a string, you use stringp, etc.
so I was expecting, in pure logic and in the frenzy of real life, that
when you want to check if a variable is nil, you use nilp

So, null is an outlier... no problem, can live with that... intuition
failed me <blush>RTFM</blush>...
Anyway, thx
/PA

On Sat, 1 Apr 2023 at 08:09, Eli Zaretskii <eliz@gnu.org> wrote:
>
> > From: Pedro Andres Aranda Gutierrez <paaguti@gmail.com>
> > Date: Sat, 1 Apr 2023 07:37:44 +0200
> >
> > Use case for a nilp function:
> >
> > I have a buffer-local variable with a default value, and I want to
> > allow to (silently) set it to nil (and only to nil) from
> > .dir-locals.el or Local Variables.
> >
> > Currently I have
> >
> > (defun nilp(v) (unless v t))
> >
> > and I use it with
> >
> > (put '<variable> 'safe-local-variable #'nilp)
> >
> > which is much cleaner than
> >
> > (put '<variable> 'safe-local-variable (lambda (p) (unless p t)))
> >
> > every time I need it. I think other people may benefit from having
> > this simple function as part of Emacs and I'm not sure whether the
> > elisp form would be better than something more lower level like
> > integerp and in which file it would reside best.
>
> Why cannot you use the existing function 'null'?
>
> If 'null' doesn't fit the bill, please explain why.



-- 
Fragen sind nicht da um beantwortet zu werden,
Fragen sind da um gestellt zu werden
Georg Kreisler

Headaches with a Juju log:
unit-basic-16: 09:17:36 WARNING juju.worker.uniter.operation we should
run a leader-deposed hook here, but we can't yet



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Arguing for a nilp function and where to put it
  2023-04-01  7:09   ` Pedro Andres Aranda Gutierrez
@ 2023-04-02 21:28     ` Roland Winkler
  2023-04-03  3:02     ` Richard Stallman
  1 sibling, 0 replies; 13+ messages in thread
From: Roland Winkler @ 2023-04-02 21:28 UTC (permalink / raw)
  To: emacs-devel

On Sat, Apr 01 2023, Pedro Andres Aranda Gutierrez wrote:
> So, null is an outlier... no problem, can live with that... intuition
> failed me <blush>RTFM</blush>...

I normally do not look at emacs' C code.  I was amused that all the
built-in function `null' does is call NILP.




^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Arguing for a nilp function and where to put it
  2023-04-01  7:09   ` Pedro Andres Aranda Gutierrez
  2023-04-02 21:28     ` Roland Winkler
@ 2023-04-03  3:02     ` Richard Stallman
  2023-04-03  3:34       ` Emanuel Berg
  1 sibling, 1 reply; 13+ messages in thread
From: Richard Stallman @ 2023-04-03  3:02 UTC (permalink / raw)
  To: Pedro Andres Aranda Gutierrez; +Cc: eliz, emacs-devel

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

I think `null' was among the first Lisp functions to be imagined and
given a name, at the very start of the invention of Lisp, before there
was an implementation -- along with `car', `cdr' and `cons'.  The
convention of naming predicates to end in `p' must have come after
that.

-- 
Dr Richard Stallman (https://stallman.org)
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Arguing for a nilp function and where to put it
  2023-04-03  3:02     ` Richard Stallman
@ 2023-04-03  3:34       ` Emanuel Berg
  2023-04-03 12:46         ` Andreas Schwab
  2023-04-03 18:48         ` Roland Winkler
  0 siblings, 2 replies; 13+ messages in thread
From: Emanuel Berg @ 2023-04-03  3:34 UTC (permalink / raw)
  To: emacs-devel

Richard Stallman wrote:

> I think `null' was among the first Lisp functions to be
> imagined and given a name, at the very start of the
> invention of Lisp, before there was an implementation --
> along with `car', `cdr' and `cons'. The convention of naming
> predicates to end in `p' must have come after that.

As you know, but it's interesting to those who don't ...

(info "(eintr) Strange Names")

  The name of the cons function is not unreasonable: it is an
  abbreviation of the word "construct". The origins of the
  names for car and cdr, on the other hand, are esoteric: car
  is an acronym from the phrase "Contents of the Address part
  of the Register"; and cdr (pronounced "could-er") is an
  acronym from the phrase "Contents of the Decrement part of
  the Register". These phrases refer to specific pieces of
  hardware on the very early computer on which the original
  Lisp was developed.

Hm ... That was in 1958? What kind of machine was that?

https://www.gnu.org/software/emacs/manual/html_node/eintr/Strange-Names.html

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Arguing for a nilp function and where to put it
  2023-04-03  3:34       ` Emanuel Berg
@ 2023-04-03 12:46         ` Andreas Schwab
  2023-04-03 18:48         ` Roland Winkler
  1 sibling, 0 replies; 13+ messages in thread
From: Andreas Schwab @ 2023-04-03 12:46 UTC (permalink / raw)
  To: emacs-devel

On Apr 03 2023, Emanuel Berg wrote:

> Hm ... That was in 1958? What kind of machine was that?

According to Wikipedia, IBM 704.

-- 
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Arguing for a nilp function and where to put it
  2023-04-03  3:34       ` Emanuel Berg
  2023-04-03 12:46         ` Andreas Schwab
@ 2023-04-03 18:48         ` Roland Winkler
  2023-04-03 23:44           ` Emanuel Berg
  2023-04-04  2:56           ` Richard Stallman
  1 sibling, 2 replies; 13+ messages in thread
From: Roland Winkler @ 2023-04-03 18:48 UTC (permalink / raw)
  To: emacs-devel

On Mon, Apr 03 2023, Emanuel Berg wrote:
> As you know, but it's interesting to those who don't ...
>
> (info "(eintr) Strange Names")
>
>   The name of the cons function is not unreasonable: it is an
>   abbreviation of the word "construct". The origins of the
>   names for car and cdr, on the other hand, are esoteric: car
>   is an acronym from the phrase "Contents of the Address part
>   of the Register"; and cdr (pronounced "could-er") is an
>   acronym from the phrase "Contents of the Decrement part of
>   the Register". These phrases refer to specific pieces of
>   hardware on the very early computer on which the original
>   Lisp was developed.
>
> Hm ... That was in 1958? What kind of machine was that?

But (info "(eintr) Strange Names") goes on:

  Besides being obsolete, the phrases have been completely irrelevant
  for more than 25 years to anyone thinking about Lisp.

When was this written?  Maybe 25 years ago?  Maybe the number should be
updated.




^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Arguing for a nilp function and where to put it
  2023-04-03 18:48         ` Roland Winkler
@ 2023-04-03 23:44           ` Emanuel Berg
  2023-04-04  2:56           ` Richard Stallman
  1 sibling, 0 replies; 13+ messages in thread
From: Emanuel Berg @ 2023-04-03 23:44 UTC (permalink / raw)
  To: emacs-devel

Roland Winkler wrote:

>> As you know, but it's interesting to those who don't ...
>>
>> (info "(eintr) Strange Names")
>>
>>   The name of the cons function is not unreasonable: it is
>>   an abbreviation of the word "construct". The origins of
>>   the names for car and cdr, on the other hand, are
>>   esoteric: car is an acronym from the phrase "Contents of
>>   the Address part of the Register"; and cdr (pronounced
>>   "could-er") is an acronym from the phrase "Contents of
>>   the Decrement part of the Register". These phrases refer
>>   to specific pieces of hardware on the very early computer
>>   on which the original Lisp was developed.
>>
>> Hm ... That was in 1958? What kind of machine was that?
>
> But (info "(eintr) Strange Names") goes on:
>
>   Besides being obsolete, the phrases have been completely
>   irrelevant for more than 25 years to anyone thinking
>   about Lisp.
>
> When was this written? Maybe 25 years ago? Maybe the number
> should be updated.

But that way, in 25 years, it has to be updated again.

Damn!

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Arguing for a nilp function and where to put it
  2023-04-03 18:48         ` Roland Winkler
  2023-04-03 23:44           ` Emanuel Berg
@ 2023-04-04  2:56           ` Richard Stallman
  2023-04-05  7:24             ` Emanuel Berg
  1 sibling, 1 reply; 13+ messages in thread
From: Richard Stallman @ 2023-04-04  2:56 UTC (permalink / raw)
  To: Roland Winkler; +Cc: emacs-devel

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > But (info "(eintr) Strange Names") goes on:

  >   Besides being obsolete, the phrases have been completely irrelevant
  >   for more than 25 years to anyone thinking about Lisp.

I think that statement is too strong.  The origins of things may cease
to be crucial, but that doesn't make them "completely irrelevant" to
the present.

-- 
Dr Richard Stallman (https://stallman.org)
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Arguing for a nilp function and where to put it
  2023-04-04  2:56           ` Richard Stallman
@ 2023-04-05  7:24             ` Emanuel Berg
  0 siblings, 0 replies; 13+ messages in thread
From: Emanuel Berg @ 2023-04-05  7:24 UTC (permalink / raw)
  To: emacs-devel

Richard Stallman wrote:

>> But (info "(eintr) Strange Names") goes on:
>>
>>   Besides being obsolete, the phrases have been completely irrelevant
>>   for more than 25 years to anyone thinking about Lisp.
>
> I think that statement is too strong. The origins of things
> may cease to be crucial, but that doesn't make them
> "completely irrelevant" to the present.

One would think not ...

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2023-04-05  7:24 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-04-01  5:37 Arguing for a nilp function and where to put it Pedro Andres Aranda Gutierrez
2023-04-01  6:01 ` tomas
2023-04-01  6:07 ` Michael Albinus
2023-04-01  6:10 ` Eli Zaretskii
2023-04-01  7:09   ` Pedro Andres Aranda Gutierrez
2023-04-02 21:28     ` Roland Winkler
2023-04-03  3:02     ` Richard Stallman
2023-04-03  3:34       ` Emanuel Berg
2023-04-03 12:46         ` Andreas Schwab
2023-04-03 18:48         ` Roland Winkler
2023-04-03 23:44           ` Emanuel Berg
2023-04-04  2:56           ` Richard Stallman
2023-04-05  7:24             ` Emanuel Berg

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.