unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* Checking if all values of a list are true
@ 2008-07-11 11:23 Nordlöw
  2008-07-11 11:33 ` Nordlöw
  2008-07-11 16:38 ` David Kastrup
  0 siblings, 2 replies; 6+ messages in thread
From: Nordlöw @ 2008-07-11 11:23 UTC (permalink / raw)
  To: help-gnu-emacs

How do I check if all values of a list are true?

This is my attempt:
(reduce 'and '(t t))

but I get the error: and (invalid-function and)

(functionp 'and)

gives true so why on earth doesn't this work?


Thanks in advance,
Nordlöw


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

* Re: Checking if all values of a list are true
  2008-07-11 11:23 Checking if all values of a list are true Nordlöw
@ 2008-07-11 11:33 ` Nordlöw
  2008-07-11 11:37   ` Nordlöw
  2008-07-11 16:38 ` David Kastrup
  1 sibling, 1 reply; 6+ messages in thread
From: Nordlöw @ 2008-07-11 11:33 UTC (permalink / raw)
  To: help-gnu-emacs

On 11 Juli, 13:23, Nordlöw <per.nord...@gmail.com> wrote:
> How do I check if all values of a list are true?
>
> This is my attempt:
> (reduce 'and '(t t))
>
> but I get the error: and (invalid-function and)
>
> (functionp 'and)
>
> gives true so why on earth doesn't this work?
>
> Thanks in advance,
> Nordlöw

Is there an alternative pure emacs-lisp way (non common-lisp (cl)) of
doing this?

/Nordlöw


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

* Re: Checking if all values of a list are true
  2008-07-11 11:33 ` Nordlöw
@ 2008-07-11 11:37   ` Nordlöw
  2008-07-11 11:51     ` Florian Beck
  2008-07-11 11:56     ` Joost Kremers
  0 siblings, 2 replies; 6+ messages in thread
From: Nordlöw @ 2008-07-11 11:37 UTC (permalink / raw)
  To: help-gnu-emacs

On 11 Juli, 13:33, Nordlöw <per.nord...@gmail.com> wrote:
> On 11 Juli, 13:23, Nordlöw <per.nord...@gmail.com> wrote:
>
> > How do I check if all values of a list are true?
>
> > This is my attempt:
> > (reduce 'and '(t t))
>
> > but I get the error: and (invalid-function and)
>
> > (functionp 'and)
>
> > gives true so why on earth doesn't this work?
>
> > Thanks in advance,
> > Nordlöw
>
> Is there an alternative pure emacs-lisp way (non common-lisp (cl)) of
> doing this?
>
> /Nordlöw

It would be even better if Emacs already had a function typically
named any-p(arg-list) that returned t if all values in arg-list are
non-nil.

/Nordlöw


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

* Re: Checking if all values of a list are true
  2008-07-11 11:37   ` Nordlöw
@ 2008-07-11 11:51     ` Florian Beck
  2008-07-11 11:56     ` Joost Kremers
  1 sibling, 0 replies; 6+ messages in thread
From: Florian Beck @ 2008-07-11 11:51 UTC (permalink / raw)
  To: help-gnu-emacs

Nordlöw <per.nordlow@gmail.com> writes:

> On 11 Juli, 13:33, Nordlöw <per.nord...@gmail.com> wrote:
>> On 11 Juli, 13:23, Nordlöw <per.nord...@gmail.com> wrote:
>>
>> > How do I check if all values of a list are true?
>>
>> > This is my attempt:
>> > (reduce 'and '(t t))
>>
>> > but I get the error: and (invalid-function and)
>>
>> > (functionp 'and)
>>
>> > gives true so why on earth doesn't this work?

Maybe because 'and is a special form, not a function.

Try (reduce #'(lambda (x y) (and x y)) '(t t t t t t t))

> It would be even better if Emacs already had a function typically
> named any-p(arg-list) that returned t if all values in arg-list are
> non-nil.

Something like

(defmacro every-p (list)
  (cons 'and (eval list)))

CL has 'every:

(every 'eval '(t t t))
-- 
Florian Beck


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

* Re: Checking if all values of a list are true
  2008-07-11 11:37   ` Nordlöw
  2008-07-11 11:51     ` Florian Beck
@ 2008-07-11 11:56     ` Joost Kremers
  1 sibling, 0 replies; 6+ messages in thread
From: Joost Kremers @ 2008-07-11 11:56 UTC (permalink / raw)
  To: help-gnu-emacs

Nordlöw wrote:
> It would be even better if Emacs already had a function typically
> named any-p(arg-list) that returned t if all values in arg-list are
> non-nil.

(defmacro all-true (lst)
  `(and ,@lst)

AND is not a function (or a macro) but a special form. in my emacs (GNU
Emacs 23.0.60.1), (functionp and) returns nil, not t. which is presumably
why functions such as reduce, funcall, mapcar etc. do not accept it as an
argument.


-- 
Joost Kremers                                      joostkremers@yahoo.com
Selbst in die Unterwelt dringt durch Spalten Licht
EN:SiS(9)


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

* Re: Checking if all values of a list are true
  2008-07-11 11:23 Checking if all values of a list are true Nordlöw
  2008-07-11 11:33 ` Nordlöw
@ 2008-07-11 16:38 ` David Kastrup
  1 sibling, 0 replies; 6+ messages in thread
From: David Kastrup @ 2008-07-11 16:38 UTC (permalink / raw)
  To: help-gnu-emacs

Nordlöw <per.nordlow@gmail.com> writes:

> How do I check if all values of a list are true?
>
> This is my attempt:
> (reduce 'and '(t t))
>
> but I get the error: and (invalid-function and)
>
> (functionp 'and)
>
> gives true so why on earth doesn't this work?

Special form.  Try

(not (memq nil '(t t)))

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum


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

end of thread, other threads:[~2008-07-11 16:38 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-07-11 11:23 Checking if all values of a list are true Nordlöw
2008-07-11 11:33 ` Nordlöw
2008-07-11 11:37   ` Nordlöw
2008-07-11 11:51     ` Florian Beck
2008-07-11 11:56     ` Joost Kremers
2008-07-11 16:38 ` David Kastrup

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).