core: Add module type.
[mes.git] / scaffold / boot / 60-let-syntax.scm
index d5602258d0c90707cfdf8d51db2c080f573523f5..b6619b68c3db815a0b5d4caa18e88d1151d5d7ad 100644 (file)
 
   (define (string->symbol s)
     (if (not (pair? (core:car s))) '()
-        (core:lookup-symbol (core:car s))))
+        (list->symbol (core:car s))))
 
   (define (string? x)
     (eq? (core:type x) <cell:string>))
-  
+
   (define (vector? x)
     (eq? (core:type x) <cell:vector>))
+
   ;; (define (body x)
   ;; (core:cdr (core:cdr (core:cdr (cdr (assq 'x (current-module)))))))
   ;; (define (closure x)
         (and (segment-template? pattern)
              (or (null? (cddr pattern))
                  (syntax-error "segment matching not implemented" pattern))))
-    
+
       (define (segment-template? pattern)
         (and (pair? pattern)
              (pair? (cdr pattern))
              (memq (cadr pattern) indicators-for-zero-or-more)))
-    
+
       (define indicators-for-zero-or-more (list (string->symbol "...") '---))
-    
+
       (lambda (exp r c)
 
         (define %input (r '%input))     ;Gensym these, if you like.
                                        0
                                        (meta-variables pattern 0 '())))))
               (syntax-error "ill-formed syntax rule" rule)))
-      
+
         ;; Generate code to test whether input expression matches pattern
 
         (define (process-match input pattern)
                  `((eq? ,input ',pattern)))
                 (else
                  `((equal? ,input ',pattern)))))
-      
+
         (define (process-segment-match input pattern)
           ;;(core:display-error "process-segment-match:") (core:write-error input) (core:display-error "\n")
           ;;(core:display-error "              pattern:") (core:write-error pattern) (core:display-error "\n")
                         (and (pair? l)
                              ,@conjuncts
                              (loop (cdr l)))))))))
-      
+
         ;; Generate code to take apart the input expression
         ;; This is pretty bad, but it seems to work (can't say why).
 
                         (if (not condition)
                             (begin exp ...))))))
    (xwhen #f 42)))
-