2
;;;; Author: Paul Dietz
3
;;;; Created: Mon Jun 9 20:57:34 2003
4
;;;; Contains: Generators for lambda expressions
8
(compile-and-load "generator.lsp")
11
(defgenerator lambda-list-generator
13
(let ((vars (loop for i from 1 to size collect (gensym))))
14
(values vars t vars)))
16
(defvar *lambda-list-generator* (make-instance 'lambda-list-generator))
18
(defgenerator lambda-generator.1 :keys (vars)
20
(let* ((s1 (random (min 5 size)))
22
(multiple-value-bind (lambda-list success1 lambda-vars)
23
(apply #'generate *lambda-list-generator* s1 ctxt)
24
(let ((vars (append (mapcar #'list lambda-vars) vars)))
25
(multiple-value-bind (body success2)
26
(apply #'generate 'implicit-progn-generator s2 :vars vars ctxt)
27
(if (and success1 success2)
28
(values `(lambda ,lambda-list ,@body))
29
(values nil nil)))))))
31
(defvar *lambda-generator* (make-instance 'lambda-generator.1))