On 8/21/07, naruto canada narutocanada@gmail.com wrote:
On 8/21/07, Etienne Laurin laurieti@iro.umontreal.ca wrote:
On Tue, Aug 21, 2007 at 02:08:43AM +0800, naruto canada wrote:
;; propositional calculator (map (lambda (p) (implies p p)) (list #t #f)) (cross-product '((0 1) (0 1) (0 1) ) ) (cross-product '((0 1) (0 1) (0 1) (0 1)) ) (define (prop-calc func lst) (map (lambda (x) (eval (cons func x))) lst) ) (prop-calc (lambda (p) (implies p p)) (bag-of (list (amb-list (list #t #f))))) ;; test tautology 'done (exit)
You can use apply instead:
(map (lambda (x) (apply func x)) lst)
Unless you really need to evaluate arbitrary scheme expressions, eval doesn't need to be used and shouldn't have to be.
oops, forgot to reply to list.
apply won't work more then one parameters (I've tried it): (prop-calc (lambda (p q) (iff (implies p q) (implies (not q) (not p)))) (cross-product '((#t #f)(#t #f))) )
Besides, when I start on predicate calculus, it's going to become ugly (symbolic), I need to make sure I can still evaluate arbitrary lambdas before planning out data structure.
Etienne Laurin
Afficher les réponses par date
On 20-Aug-07, at 3:06 PM, naruto canada wrote:
oops, forgot to reply to list.
apply won't work more then one parameters (I've tried it): (prop-calc (lambda (p q) (iff (implies p q) (implies (not q) (not p)))) (cross-product '((#t #f)(#t #f))) )
I'm not sure what you tried but Gambit supports a multiple argument apply (the last argument is a list of the remaining arguments. So:
(apply + '(1 2 3 4))
10
(apply + 1 '(2 3 4))
10
(apply + 1 2 '(3 4))
10
(apply + 1 2 3 '(4))
10
(apply + 1 2 3 4 '())
10
Marc