Code: Select all
(all? integer? 1 2 3 "string")
Code: Select all
(apply and (map integer? (list 1 2 3 "string")))
Code: Select all
(integer? 1 2 3 "string")
It would be great if all predicates accepted multiple arguments.
Thanks,
-- Sam
Code: Select all
(all? integer? 1 2 3 "string")
Code: Select all
(apply and (map integer? (list 1 2 3 "string")))
Code: Select all
(integer? 1 2 3 "string")
Code: Select all
(exists integer? (list 1 2 3 "string"))
;-> 1
Code: Select all
(for-all integer? (list 1 2 3 "string"))
;-> nil
Code: Select all
(setf [print.supressed] true [println.supressed] true) ; ----
(load "http://instprog.com/Instprog.default-library.lsp") ; only println= used
(setf [print.supressed] nil [println.supressed] nil) ; ----
(define-macro (flat-for-all)
(letn((L (args))
(r (cons 'and (map (lambda(x)(list (first L) x)) (rest L)))))
(print "{" r "}=")
(eval r)))
(println= (flat-for-all integer? 1 "hugo") "\n")
(dolist (i '(integer? float? string? list?))
(letex((old-predicate i)
(new-predicate (sym (push "s" (string i) -2)))) ;float?->floats?
(define-macro (new-predicate)
(eval (append '(flat-for-all old-predicate)
(args))))
(println= new-predicate )))
(println= "\n" (integers? 1 2 "hugo") "\n"
(integers? 1 2 3 4) "\n"
(floats? 1.5 6.1) "\n"
(strings? "hi" "ho"))
Code: Select all
(flat-for-all integer? 1 "hugo")={(and (integer? 1) (integer? "hugo"))}=nil;
integers?=(lambda-macro () (eval (append '(flat-for-all integer?) (args))));
floats?=(lambda-macro () (eval (append '(flat-for-all float?) (args))));
strings?=(lambda-macro () (eval (append '(flat-for-all string?) (args))));
lists?=(lambda-macro () (eval (append '(flat-for-all list?) (args))));
(integers? 1 2 "hugo")={(and (integer? 1) (integer? 2) (integer? "hugo"))}=nil;
(integers? 1 2 3 4)={(and (integer? 1) (integer? 2) (integer? 3) (integer? 4))}=true;
(floats? 1.5 6.1)={(and (float? 1.5) (float? 6.1))}=true;
(strings? "hi" "ho")={(and (string? "hi") (string? "ho"))}=true;
Code: Select all
(define (for-all-args func)
(for-all func (args)))
> (for-all-args number? 2 3 4 5)
true
> (for-all-args number? 2 3 'not 5)
nil