-(define-macro (make-view body)
- `(build-view (lambda () ,body)))
+;(defmacro* view (#:key (priority 0) . elements)
+(define-macro (view-elements . elements)
+ (cond ((null? elements) `'(() ()))
+ (else
+ `(let ((l (view-elements ,@(cdr elements))))
+ ,(let ((e (car elements)))
+ `(cond ((mesh? ,e)
+ (list (car l) (cons ,e (cadr l))))
+ ((procedure? ,e)
+ (list (cons ,(if (list? e) e `(lambda () (,e))) (car l))
+ (cadr l)))
+ (else l)))))))
+
+(define* (view2 #:key (priority 0) . elements)
+ (let ((controllers '())
+ (meshes '()))
+ (define (f elements)
+ (cond ((not (null? elements))
+ (cond ((mesh? (car elements)) (set! meshes (cons (car elements) meshes)))
+ ((procedure? (car elements)) (set! controllers (cons (car elements) controllers))))
+ (f (cdr elements)))))
+ (f elements)
+ (display controllers)
+ (newline)
+ (display meshes)
+ (newline)))