;;; Generated Guile module; edit the LP fragments.
(define-module
 (lp-example mce environment)
 #:export
 (extend-environment lookup define-value!))

;;; Generated from an LP program; edit the fragment sources.
;;; Execution order follows the declared program.

;;; mce-env — lp-0008.plant:51
(define (extend-environment names values outer)
       (unless (= (length names) (length values)) (throw 'mce-arity names values))
       (cons (vector (map cons names values)) outer))

(define (lookup name environment)
       (if (null? environment) (throw 'mce-unbound name)
           (let ((binding (assq name (vector-ref (car environment) 0))))
             (if binding (cdr binding) (lookup name (cdr environment))))))

(define (define-value! name value environment)
       (let* ((frame (car environment)) (binding (assq name (vector-ref frame 0))))
         (if binding (set-cdr! binding value)
             (vector-set! frame 0 (cons (cons name value) (vector-ref frame 0))))))
