anchor.diff:  		   ;; underscore.js from cdnjs
   		   "http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.4.4/underscore-min.js"
   		   ;; backbone.js from cdnjs
  -                   "http://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.0.0/backbone-min.js"
  -                   ;; bootstrap
  -                   "http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.2/js/bootstrap.min.js"))
  -  (defvar tmp-array (array (duplicate number-model :number 1)
  -                           (duplicate number-model :number 2)
  -                           (duplicate number-model :number 3)
  -                           (duplicate number-model :number 4)))
  -  (defvar number-set0 (duplicate number-set-model
  -                                 :model-list tmp-array))
  -  (defvar select0 (duplicate number-set-view
  -                             :model number-set0)))
  +                   "http://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.0.0/backbone-min.js"))
  +  (create-event-manager vent
  +                        "submit-event" (lambda ()
  +                                         (@fetch (@ solutions list)
  +                                                 :url "/game24/calc"
  +                                                 :type "post"
  +                                                 :server (let ((numbers (array (@. number-set-0 (get "selected"))
  +                                                                               (@. number-set-1 (get "selected"))
  +                                                                               (@. number-set-2 (get "selected"))
  +                                                                               (@. number-set-3 (get "selected")))))
  +                                                           (let ((result (remove-duplicates (mapcar #'normalize-exp (solve numbers)) :test #'equal)))
  +                                                             (jsown:to-json (mapcar (lambda (x) `(:obj ("solution" ,(format nil "solution: ~a" x))))
  +                                                                                    result)))))))
  +  (macrolet ((place-view (id)
  +               `(progn (defvar ,(symb 'number-set- id) 
  +                         (duplicate number-set-model))
  +                       (defvar ,(symb 'number-set-view- id)
  +                         (duplicate number-set-view
  +                                    :model ,(symb 'number-set- id))))))
  +    (place-view 0)
  +    (place-view 1)
  +    (place-view 2)
  +    (place-view 3))
  +  (defvar button (duplicate submit-button
  +                            :model (duplicate submit-model
  +                                              :vent vent)))
  +
  +  (defvar solutions (duplicate solutions-model
  +                               :model-list (array (duplicate single-solution-model
  +                                                             :solution "(* 6 4)")
  +                                                  (duplicate single-solution-model
  +                                                             :solution "(* 3 8)")
  +                                                  (duplicate single-solution-model
  +                                                             :solution "(+ 12 12)"))))
  +  (defvar solution-list (duplicate solutions-view 
  +                                   :model solutions)))
               
        
   
  
positive.code:     (remove-if-not (lambda (x) (= (calc x) 24)) (gen lst nil nil))))
  
  
  ;; (def-model input-model
  ;;     ((defaults (lambda () (create 
  
  
  (defmacro connect (&rest lst)
    (if (null lst) nil
        `(cons ,(car lst) (connect ,@(cdr lst)))))
  
  
  (def-model number-model
      ((defaults (properties :number 0))))
  
  (def-view number-view
      ((tag-name "option")
       (template "<%=number%>")
       (initialize (lazy-init
                    (append-to-parent)
                    nil))
       (render (lambda ()
                 (render-from-model)
                 this))))
  
  (def-collection number-set-model
      ((defaults (properties :selected 0))
       (model number-model)))
  
  (def-collection-view number-set-view
      ((tag-name "select")
       (sub-view number-view)
       (initialize (lazy-init
                    (append-to-parent)
                    (@. this model list (each (@ this lazy-add)))))
       (render (lambda ()
                 (render-from-model)
                 this))))
                 
      
  
                   
       
  
  
  (define-simple-app game24-app
      (:title "Game 24"
  
negative.code: (in-package :breakds.game24)
  
  (defmacro map-cartesian (fun &rest lists)
    (labels ((reduce-iter (x-vars y-var remain)
  