Changeset 11845 in project


Ignore:
Timestamp:
09/01/08 09:54:07 (13 years ago)
Author:
Ivan Raikov
Message:

Renaming all identifiers.

Location:
release/3/nemo/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • release/3/nemo/trunk/extensions/nemo-hh.scm

    r11844 r11845  
    2525(require-extension srfi-1)
    2626(require-extension srfi-13)
    27 (require-extension oru-core)
     27(require-extension nemo-core)
    2828(require-extension environments)
    2929
     
    4242  (for-each (lambda (name)
    4343              (if (environment-includes? env name)
    44                   (oru:error 'oru:hh-transformer "quantity " name " in ionic conductance declaration " ion
     44                  (nemo:error 'nemo:hh-transformer "quantity " name " in ionic conductance declaration " ion
    4545                             "is already declared elsewhere")))
    4646            names))
     
    5151        (for-each (lambda (name)
    5252                    (if (not (alist-ref name alst))
    53                         (oru:error 'oru:hh-transformer "required quantity " name
     53                        (nemo:error 'nemo:hh-transformer "required quantity " name
    5454                                   " is not present in ionic conductance declaration " ion)))
    5555                  names)
     
    7272           
    7373            (if (not (and (integer? m-power) (positive? m-power)))
    74                 (oru:error 'oru:hh-transformer
     74                (nemo:error 'nemo:hh-transformer
    7575                           "m-power value in ionic conductance declaration " ion
    7676                           " must be a positive integer"))
     
    8888           
    8989            (if (not (and (integer? h-power) (or (zero? h-power) (positive? m-power))))
    90                 (oru:error 'oru:hh-transformer
     90                (nemo:error 'nemo:hh-transformer
    9191                           "h-power value in ionic conductance declaration " ion
    9292                                                        " must be a positive integer"))
     
    133133         (else (list))))
    134134
    135 (define (oru:hh-transformer sys . rest)
    136   (let ((new-sys  (oru:env-copy sys)))
    137    (match-let ((($ oru:quantity 'DISPATCH  dis) (environment-ref new-sys (oru-intern 'dispatch))))
     135(define (nemo:hh-transformer sys . rest)
     136  (let ((new-sys  (nemo:env-copy sys)))
     137   (match-let ((($ nemo:quantity 'DISPATCH  dis) (environment-ref new-sys (nemo-intern 'dispatch))))
    138138     (let* ((eval-const         (dis 'eval-const))
    139139            (env-extend!        ((dis 'env-extend!) new-sys))
  • release/3/nemo/trunk/nemo-macros.scm

    r11844 r11845  
    2020
    2121(require-extension srfi-1)
    22 (require-extension oru-core)
     22(require-extension nemo-core)
    2323(require-extension environments)
    2424
    2525
    26 (define-macro (oru-begin sys . body)
     26(define-macro (nemo-begin sys . body)
    2727  `(begin
    28      (if (not (environment? ,sys)) (oru:error 'oru-begin "system argument must be an environment"))
    29      (let ((oru (match (environment-ref ,sys (oru-intern 'orucore))
    30                            (($ oru:quantity 'DISPATCH value)  value))))
     28     (if (not (environment? ,sys)) (nemo:error 'nemo-begin "system argument must be an environment"))
     29     (let ((nemo (match (environment-ref ,sys (nemo-intern 'nemocore))
     30                           (($ nemo:quantity 'DISPATCH value)  value))))
    3131       ,@body)))
    3232
    3333
    34 (define-macro (oru-model name declarations . body)
     34(define-macro (nemo-model name declarations . body)
    3535  `(begin
    36      (let* ((oru   (make-oru-core))
    37             (,name     ((oru 'system) ',name)))
    38        (eval-oru-system-decls oru ',name ,name (list ,@(map (lambda (x) (list 'quasiquote x)) declarations)))
     36     (let* ((nemo   (make-nemo-core))
     37            (,name     ((nemo 'system) ',name)))
     38       (eval-nemo-system-decls nemo ',name ,name (list ,@(map (lambda (x) (list 'quasiquote x)) declarations)))
    3939       ,@body)))
    4040                   
    4141
    42 (define-macro (oru-transform sys declarations)
     42(define-macro (nemo-transform sys declarations)
    4343  `(begin
    44      (if (not (environment? ,sys)) (oru:error 'oru-transform "system argument must be an environment"))
    45      (let* ((oru  (match (environment-ref ,sys (oru-intern 'dispatch))
    46                              (($ oru:quantity 'DISPATCH value)  value)))
    47             (sys1 (oru:env-copy ,sys))
    48             (name ((oru 'sysname) sys1)))
    49      (eval-oru-system-decls oru name sys1 (list ,@(map (lambda (x) (list 'quasiquote x)) declarations)))
     44     (if (not (environment? ,sys)) (nemo:error 'nemo-transform "system argument must be an environment"))
     45     (let* ((nemo  (match (environment-ref ,sys (nemo-intern 'dispatch))
     46                             (($ nemo:quantity 'DISPATCH value)  value)))
     47            (sys1 (nemo:env-copy ,sys))
     48            (name ((nemo 'sysname) sys1)))
     49     (eval-nemo-system-decls nemo name sys1 (list ,@(map (lambda (x) (list 'quasiquote x)) declarations)))
    5050     sys1)))
  • release/3/nemo/trunk/nemo.scm

    r11844 r11845  
    3333(include "mathh-constants")
    3434
    35 (define-extension oru-core)
    36 
    37 (declare (export make-oru-core oru:error oru:warning
    38                  oru:env-copy oru-intern oru:quantity?
    39                  eval-oru-system-decls
     35(define-extension nemo-core)
     36
     37(declare (export make-nemo-core nemo:error nemo:warning
     38                 nemo:env-copy nemo-intern nemo:quantity?
     39                 eval-nemo-system-decls
    4040                 TSCOMP ASGN CONST PRIM))
    4141
     
    4545;
    4646
    47 (define (oru:warning x . rest)
     47(define (nemo:warning x . rest)
    4848  (let loop ((port (open-output-string)) (objs (cons x rest)))
    4949    (if (null? objs)
     
    5151          (newline port)
    5252          (print-error-message (get-output-string port)
    53                                (current-error-port) "oru warning"))
     53                               (current-error-port) "nemo warning"))
    5454        (begin (display (car objs) port)
    5555               (display " " port)
    5656               (loop port (cdr objs))))))
    5757
    58 (define (oru:error x . rest)
     58(define (nemo:error x . rest)
    5959  (let ((port (open-output-string)))
    6060    (if (port? x)
     
    6767          (begin
    6868            (newline port)
    69             (error 'oru (get-output-string port)))
     69            (error 'nemo (get-output-string port)))
    7070          (let ((obj (car objs)))
    7171            (if (procedure? obj)
     
    8282         (else #f)))
    8383
    84 (define-datatype oru:quantity oru:quantity?
     84(define-datatype nemo:quantity nemo:quantity?
    8585  (SYSNAME    (name symbol?))
    8686  (ASGN       (name symbol?) (value number?) (rhs rhs?) )
     
    9797  )
    9898
    99 (define (oru-intern sym)
     99(define (nemo-intern sym)
    100100  (string->symbol (string-append "#" (symbol->string sym))))
    101101
     
    105105      (if v (first v) default))))
    106106
    107 (define (make-oru-core . alst)
     107(define (make-nemo-core . alst)
    108108
    109109  ;; floating point precision (single or double; default is double)
     
    228228      env))
    229229   
    230   (define (make-const-env oru-env)
     230  (define (make-const-env nemo-env)
    231231    (let ((env (make-base-env)))
    232       (environment-for-each oru-env
     232      (environment-for-each nemo-env
    233233        (lambda (sym en)
    234           (cond  ((oru:quantity? en) 
    235                   (cases oru:quantity en
     234          (cond  ((nemo:quantity? en) 
     235                  (cases nemo:quantity en
    236236                         (CONST (name value) 
    237237                                (environment-extend! env name value))
     
    245245    (let ((env  (make-base-env))
    246246          (name (if (symbol? name) name (string->symbol name))))
    247       (environment-extend! env (oru-intern 'dispatch)  (DISPATCH oru-dispatch))
    248       (environment-extend! env (oru-intern 'name)      (SYSNAME name))
    249       (environment-extend! env (oru-intern 'exports)   (EXPORTS (list)))
     247      (environment-extend! env (nemo-intern 'dispatch)  (DISPATCH nemo-dispatch))
     248      (environment-extend! env (nemo-intern 'name)      (SYSNAME name))
     249      (environment-extend! env (nemo-intern 'exports)   (EXPORTS (list)))
    250250      env))
    251251
    252   (define (add-external! oru-env)
     252  (define (add-external! nemo-env)
    253253    (lambda (sym typ)
    254254      (match typ
    255255             ('output
    256256              (begin
    257                 (if (not (environment-has-binding? oru-env sym))
    258                     (oru:error 'add-external! ": exported quantity " sym " is not defined"))
    259                 (let* ((exports-sym   (oru-intern 'exports))
    260                        (exports       (environment-ref oru-env exports-sym)))
    261                   (cases oru:quantity exports
    262                          (EXPORTS (lst) (environment-set! oru-env exports-sym (EXPORTS (cons sym lst))))
    263                          (else  (oru:error 'add-external! ": invalid exports entry " exports))))))
     257                (if (not (environment-has-binding? nemo-env sym))
     258                    (nemo:error 'add-external! ": exported quantity " sym " is not defined"))
     259                (let* ((exports-sym   (nemo-intern 'exports))
     260                       (exports       (environment-ref nemo-env exports-sym)))
     261                  (cases nemo:quantity exports
     262                         (EXPORTS (lst) (environment-set! nemo-env exports-sym (EXPORTS (cons sym lst))))
     263                         (else  (nemo:error 'add-external! ": invalid exports entry " exports))))))
    264264             
    265265             (('input sym lsym ns)
    266266              (let ((lsym (or lsym sym)))
    267267               
    268                 (if (environment-has-binding? oru-env lsym)
    269                     (oru:error 'add-import! ": import symbol " lsym " is already defined"))
     268                (if (environment-has-binding? nemo-env lsym)
     269                    (nemo:error 'add-import! ": import symbol " lsym " is already defined"))
    270270               
    271                 ((env-extend! oru-env) lsym '(external) 'none `(name ,sym) `(namespace ,ns))))
     271                ((env-extend! nemo-env) lsym '(external) 'none `(name ,sym) `(namespace ,ns))))
    272272             
    273273             )))
    274274
    275   (define (env-extend! oru-env)
     275  (define (env-extend! nemo-env)
    276276    (lambda (name type initial . alst)
    277277       (let ((sym (if (symbol? name) name (string->symbol name))))
    278         (if (environment-has-binding? oru-env sym)
    279             (oru:error 'env-extend! ": quantity " sym " already defined")
     278        (if (environment-has-binding? nemo-env sym)
     279            (nemo:error 'env-extend! ": quantity " sym " already defined")
    280280            (match type
    281281              (('external)  (let ((ns  (lookup-def 'namespace alst))
    282282                                  (external-name  (lookup-def 'name alst)))
    283                               (environment-extend! oru-env sym (EXTERNAL name external-name ns ))))
     283                              (environment-extend! nemo-env sym (EXTERNAL name external-name ns ))))
    284284                             
    285285              (('prim)    (let* ((rhs (lookup-def 'rhs alst))
     
    287287                                          (extend-procedure initial rhs)
    288288                                          initial)))
    289                             (environment-extend! oru-env sym (PRIM name val ))))
     289                            (environment-extend! nemo-env sym (PRIM name val ))))
    290290
    291291              (('const)   (begin
    292292                            (if (not (number? initial))
    293                                 (oru:error 'env-extend! ": constant definitions require numeric value"))
    294                             (environment-extend! oru-env sym (CONST name initial))))
     293                                (nemo:error 'env-extend! ": constant definitions require numeric value"))
     294                            (environment-extend! nemo-env sym (CONST name initial))))
    295295
    296296              (('tscomp)  (let ((power        (or (lookup-def 'power alst) 1))
     
    298298                                (open         (lookup-def 'open alst)))
    299299                            (if (null? transitions)
    300                                 (oru:error 'env-extend!
     300                                (nemo:error 'env-extend!
    301301                                               ": transition state complex definitions require a transition scheme"))
    302302                            (if (not open)
    303                                 (oru:error 'env-extend! ": state complex definitions require open state"))
     303                                (nemo:error 'env-extend! ": state complex definitions require open state"))
    304304                            (if (not (integer? power))
    305                                 (oru:error 'env-extend!
     305                                (nemo:error 'env-extend!
    306306                                               ": definition for state " sym
    307307                                               " requires an integer power (" power  " was given)"))
    308308                            (let ((en (TSCOMP name initial open transitions power)))
    309                               (environment-extend! oru-env sym en))))
     309                              (environment-extend! nemo-env sym en))))
    310310
    311311              (('asgn)    (let ((rhs (lookup-def 'rhs alst)))
    312312                            (if (not (eq? initial 'none))
    313                                 (oru:error 'env-extend!
     313                                (nemo:error 'env-extend!
    314314                                                    ": state function definitions must have initial value of '(none)"))
    315315                            (if (not rhs)
    316                                 (oru:error 'env-extend! ": state function definitions require an equation"))
    317                             (environment-extend! oru-env sym (ASGN  name 0.0 (normalize-expr rhs)))))
     316                                (nemo:error 'env-extend! ": state function definitions require an equation"))
     317                            (environment-extend! nemo-env sym (ASGN  name 0.0 (normalize-expr rhs)))))
    318318
    319319              (else       (begin
    320                             (environment-extend! oru-env sym `(,type (name ,sym) . ,initial))))
     320                            (environment-extend! nemo-env sym `(,type (name ,sym) . ,initial))))
    321321              )))))
    322322
    323   (define (infer oru-env ftenv body)
     323  (define (infer nemo-env ftenv body)
    324324    (let recur ((expr body) (lb (list)))
    325325      (match expr
     
    331331                     (begin
    332332                       (if (not (equal? ct 'bool))
    333                            (oru:error 'infer "if condition type must be boolean"))
     333                           (nemo:error 'infer "if condition type must be boolean"))
    334334                       (if (equal? tt et) tt
    335                            (oru:error 'infer "type mismatch in if statement: then = " tt
     335                           (nemo:error 'infer "type mismatch in if statement: then = " tt
    336336                                      " else = " et))))))
    337337             (('let bs e)
     
    342342             
    343343             ((s . es)   
    344               (let* ((f    (environment-ref oru-env s))
     344              (let* ((f    (environment-ref nemo-env s))
    345345                     (lst  (procedure-data f)))
    346346                (and lst
     
    366366   
    367367
    368   (define (defun! oru-env)
     368  (define (defun! nemo-env)
    369369    (lambda (name formals body)
    370         (let ((const-env (make-const-env oru-env))
     370        (let ((const-env (make-const-env nemo-env))
    371371              (sym (if (symbol? name) name (string->symbol name))))
    372372          (letrec ((enumconsts
     
    381381                                                      (environment-includes? const-env s))
    382382                                                 (cons s ax) ax)))))))
    383             (if (environment-has-binding? oru-env sym)
    384                 (oru:error 'defun! ": quantity " sym " already defined")
     383            (if (environment-has-binding? nemo-env sym)
     384                (nemo:error 'defun! ": quantity " sym " already defined")
    385385                (let* ((body    (normalize-expr body))
    386386                       (consts  (delete-duplicates ((enumconsts formals) body (list))))
     
    391391                 
    392392                  (let* ((ftenv  (make-environment))
    393                          (rt     (infer oru-env ftenv body))
     393                         (rt     (infer nemo-env ftenv body))
    394394                         (ftypes (filter-map (lambda (x) (and (environment-includes? ftenv x)
    395395                                                              (environment-ref ftenv x)))
     
    397397                         (ef     (extend-procedure f `((rt ,rt) (formals ,ftypes) (vars ,formals)
    398398                                                       (body ,body) (consts ,consts)))))
    399                   (environment-extend! oru-env sym ef))))))))
     399                  (environment-extend! nemo-env sym ef))))))))
    400400
    401401  (define (symbol-list? lst)
    402402    (and (list? lst) (every symbol? lst)))
    403403
    404   (define (extended oru-env)
     404  (define (extended nemo-env)
    405405      (filter-map (lambda (sym)
    406                     (let ((x (environment-ref oru-env sym)))
    407                       (and (not (oru:quantity? x)) (not (procedure? x))
     406                    (let ((x (environment-ref nemo-env sym)))
     407                      (and (not (nemo:quantity? x)) (not (procedure? x))
    408408                           (match x
    409409                                  (((? symbol-list?) ('name name) . rest)  `(,sym ,x))
    410410                                  (else #f)))))
    411            (environment-symbols oru-env)))
     411           (environment-symbols nemo-env)))
    412412                       
    413413
    414   (define (extended-with-tag oru-env tag)
     414  (define (extended-with-tag nemo-env tag)
    415415      (filter-map (lambda (sym)
    416                     (let ((x (environment-ref oru-env sym)))
    417                       (and (not (oru:quantity? x)) (not (procedure? x))
     416                    (let ((x (environment-ref nemo-env sym)))
     417                      (and (not (nemo:quantity? x)) (not (procedure? x))
    418418                           (match x
    419419                                  (((? (lambda (x) (equal? x tag))) ('name name) . rest) 
    420420                                   `(,sym ,x))
    421421                                  (else #f)))))
    422            (environment-symbols oru-env)))
     422           (environment-symbols nemo-env)))
    423423                       
    424424
    425   (define (components oru-env)
     425  (define (components nemo-env)
    426426      (filter-map (lambda (sym)
    427                     (let ((x (environment-ref oru-env sym)))
    428                       (and (oru:quantity? x)
    429                            (cases oru:quantity x
     427                    (let ((x (environment-ref nemo-env sym)))
     428                      (and (nemo:quantity? x)
     429                           (cases nemo:quantity x
    430430                                  (COMPONENT (type lst)  `(,type ,sym))
    431431                                  (else #f)))))
    432            (environment-symbols oru-env)))
    433 
    434 
    435   (define (component-symbols oru-env sym)
    436     (let ((x (environment-ref oru-env sym)))
    437       (and (oru:quantity? x)
    438            (cases oru:quantity x
     432           (environment-symbols nemo-env)))
     433
     434
     435  (define (component-symbols nemo-env sym)
     436    (let ((x (environment-ref nemo-env sym)))
     437      (and (nemo:quantity? x)
     438           (cases nemo:quantity x
    439439                  (COMPONENT (type lst)  lst)
    440440                  (else #f)))))
    441441
    442442
    443   (define (component-exports oru-env sym)
    444     (let ((all-exports (cases oru:quantity (environment-ref oru-env (oru-intern 'exports))
     443  (define (component-exports nemo-env sym)
     444    (let ((all-exports (cases nemo:quantity (environment-ref nemo-env (nemo-intern 'exports))
    445445                              (EXPORTS (lst)  lst))))
    446       (let ((x (environment-ref oru-env sym)))
    447         (and (oru:quantity? x)
    448              (cases oru:quantity x
     446      (let ((x (environment-ref nemo-env sym)))
     447        (and (nemo:quantity? x)
     448             (cases nemo:quantity x
    449449                    (COMPONENT (type lst) 
    450450                      (filter-map (lambda (x) ((lambda (x) (and x (car x))) (member x all-exports))) lst))
    451451                    (else #f))))))
    452452
    453   (define (component-subcomps oru-env sym)
     453  (define (component-subcomps nemo-env sym)
    454454    (define (component-type x)
    455       (cases oru:quantity x
     455      (cases nemo:quantity x
    456456             (COMPONENT (type lst) type)
    457457             (else #f)))
    458     (let ((x (environment-ref oru-env sym)))
    459       (and (oru:quantity? x)
    460            (cases oru:quantity x
     458    (let ((x (environment-ref nemo-env sym)))
     459      (and (nemo:quantity? x)
     460           (cases nemo:quantity x
    461461                  (COMPONENT (type lst) 
    462                              (filter-map (lambda (s) (let ((x (environment-ref oru-env s)))
     462                             (filter-map (lambda (s) (let ((x (environment-ref nemo-env s)))
    463463                                                       (and (iscomp? x) `(,(component-type x) ,s)))) lst))
    464464                  (else #f)))))
    465465
    466   (define (component-extend! oru-env)
     466  (define (component-extend! nemo-env)
    467467    (lambda (comp sym)
    468       (let ((x (environment-ref oru-env comp)))
    469         (if (oru:quantity? x)
    470             (cases oru:quantity x
     468      (let ((x (environment-ref nemo-env comp)))
     469        (if (nemo:quantity? x)
     470            (cases nemo:quantity x
    471471                   (COMPONENT (type lst) 
    472472                              (let ((en1 (COMPONENT type (cons sym lst))))
    473                                 (environment-set! oru-env comp en1)))
    474                    (else (oru:error 'component-extend! ": invalid component " comp)))
    475             (oru:error 'component-extend! ": invalid component " comp)))))
    476 
    477 
    478   (define (exports oru-env)
    479     (cases oru:quantity (environment-ref oru-env (oru-intern 'exports))
     473                                (environment-set! nemo-env comp en1)))
     474                   (else (nemo:error 'component-extend! ": invalid component " comp)))
     475            (nemo:error 'component-extend! ": invalid component " comp)))))
     476
     477
     478  (define (exports nemo-env)
     479    (cases nemo:quantity (environment-ref nemo-env (nemo-intern 'exports))
    480480           (EXPORTS (lst)  lst)))
    481481
    482482
    483   (define (imports oru-env)
     483  (define (imports nemo-env)
    484484      (filter-map (lambda (sym)
    485                     (let ((x (environment-ref oru-env sym)))
    486                       (and (oru:quantity? x)
    487                            (cases oru:quantity x
     485                    (let ((x (environment-ref nemo-env sym)))
     486                      (and (nemo:quantity? x)
     487                           (cases nemo:quantity x
    488488                                  (EXTERNAL (local-name name namespace)  (list local-name name namespace))
    489489                                  (else #f)))))
    490            (environment-symbols oru-env)))
    491 
    492 
    493   (define (consts oru-env)
     490           (environment-symbols nemo-env)))
     491
     492
     493  (define (consts nemo-env)
    494494      (filter-map (lambda (sym)
    495                     (let ((x (environment-ref oru-env sym)))
    496                       (and (oru:quantity? x)
    497                            (cases oru:quantity x
     495                    (let ((x (environment-ref nemo-env sym)))
     496                      (and (nemo:quantity? x)
     497                           (cases nemo:quantity x
    498498                                  (CONST (name value)  (list name value) )
    499499                                  (else #f)))))
    500            (environment-symbols oru-env)))
    501 
    502 
    503   (define (states oru-env)
     500           (environment-symbols nemo-env)))
     501
     502
     503  (define (states nemo-env)
    504504      (fold (lambda (sym ax)
    505                     (let ((x (environment-ref oru-env sym)))
    506                       (if (oru:quantity? x)
    507                            (cases oru:quantity x
     505                    (let ((x (environment-ref nemo-env sym)))
     506                      (if (nemo:quantity? x)
     507                           (cases nemo:quantity x
    508508                                  (TSCOMP (name initial open transitions power)
    509509                                          (let ((ss (delete-duplicates (append (map second transitions)
     
    512512                                  (else ax))
    513513                           ax)))
    514            (list) (environment-symbols oru-env)))
    515 
    516 
    517   (define (stcomps oru-env)
     514           (list) (environment-symbols nemo-env)))
     515
     516
     517  (define (stcomps nemo-env)
    518518      (fold (lambda (sym ax)
    519                     (let ((x (environment-ref oru-env sym)))
    520                       (if (oru:quantity? x)
    521                            (cases oru:quantity x
     519                    (let ((x (environment-ref nemo-env sym)))
     520                      (if (nemo:quantity? x)
     521                           (cases nemo:quantity x
    522522                                  (TSCOMP (name initial open transitions power)
    523523                                          (cons name ax))
    524524                                  (else ax))
    525525                           ax)))
    526            (list) (environment-symbols oru-env)))
    527 
    528 
    529   (define (asgns oru-env)
     526           (list) (environment-symbols nemo-env)))
     527
     528
     529  (define (asgns nemo-env)
    530530      (filter-map (lambda (sym)
    531                     (let ((x (environment-ref oru-env sym)))
    532                       (and (oru:quantity? x)
    533                            (cases oru:quantity x
     531                    (let ((x (environment-ref nemo-env sym)))
     532                      (and (nemo:quantity? x)
     533                           (cases nemo:quantity x
    534534                                  (ASGN (name value rhs) name)
    535535                                  (else #f)))))
    536            (environment-symbols oru-env)))
    537 
    538 
    539   (define (defuns oru-env)
     536           (environment-symbols nemo-env)))
     537
     538
     539  (define (defuns nemo-env)
    540540      (filter-map (lambda (sym)
    541                     (let ((x (environment-ref oru-env sym)))
     541                    (let ((x (environment-ref nemo-env sym)))
    542542                      (and (procedure? x) (not (member sym builtin-fns)) (list sym x))))
    543            (environment-symbols oru-env)))
     543           (environment-symbols nemo-env)))
    544544
    545545
    546546                                       
    547   (define (exam oru-env)
     547  (define (exam nemo-env)
    548548    (lambda (name)
    549549      (let ((sym (if (symbol? name) name (string->symbol name)))
    550550            (out (current-output-port)))
    551         (if (not (environment-has-binding? oru-env sym))
    552             (oru:error 'exam ": quantity " sym " is not defined")
    553             (let ((x (environment-ref oru-env sym)))
    554               (cases oru:quantity x
     551        (if (not (environment-has-binding? nemo-env sym))
     552            (nemo:error 'exam ": quantity " sym " is not defined")
     553            (let ((x (environment-ref nemo-env sym)))
     554              (cases nemo:quantity x
    555555                     (PRIM  (name value)
    556556                            (begin
    557                               (fprintf out "~a: compiled coru primitive\n" name)
     557                              (fprintf out "~a: compiled cnemo primitive\n" name)
    558558                              (fprintf out "    value: ~a\n" value)))
    559559
     
    573573                                 (fprintf out "    value: ~a\n" value)))
    574574
    575                      (else (oru:error 'exam name ": unknown type of quantity"))))))))
     575                     (else (nemo:error 'exam name ": unknown type of quantity"))))))))
    576576 
    577577
    578   (define (eval-const oru-env expr)
     578  (define (eval-const nemo-env expr)
    579579    (let ((expr1 (normalize-expr expr)))
    580       (exact->inexact (eval expr1  (make-const-env oru-env)))))
     580      (exact->inexact (eval expr1  (make-const-env nemo-env)))))
    581581
    582582
    583583  (define (iscomp? x)
    584     (cond ((oru:quantity? x)
    585            (cases oru:quantity x
     584    (cond ((nemo:quantity? x)
     585           (cases nemo:quantity x
    586586                  (COMPONENT  (type lst)  #t)
    587587                  (else #f)))
     
    589589
    590590  (define (isdep? x)
    591     (cond ((oru:quantity? x)
    592            (cases oru:quantity x
     591    (cond ((nemo:quantity? x)
     592           (cases nemo:quantity x
    593593                  (ASGN  (name value rhs)  #t)
    594594                  (else #f)))
     
    598598
    599599  (define (isstate? x)
    600     (and (oru:quantity? x)
    601          (cases oru:quantity x
     600    (and (nemo:quantity? x)
     601         (cases nemo:quantity x
    602602                (TSCOMP (name initial open transitions)  #t)
    603603                (else #f))))
     
    605605
    606606  (define (qrhs x)
    607     (and (oru:quantity? x)
    608          (cases oru:quantity x
     607    (and (nemo:quantity? x)
     608         (cases nemo:quantity x
    609609                (TSCOMP (name initial open transitions) 
    610610                        (begin
     
    614614
    615615           
    616   (define (sysname oru-env)
    617     (cases oru:quantity (environment-ref oru-env (oru-intern 'name))
     616  (define (sysname nemo-env)
     617    (cases nemo:quantity (environment-ref nemo-env (nemo-intern 'name))
    618618           (SYSNAME (name)  name)))
    619619
    620620
    621621  ;; create equation dependency graph
    622   (define (make-eqng oru-env)
    623     (let* ((sysname    (sysname oru-env))
     622  (define (make-eqng nemo-env)
     623    (let* ((sysname    (sysname nemo-env))
    624624           (g          (make-digraph sysname (string-append (symbol->string sysname)
    625625                                                            " equation dependency graph")))
    626626           (add-node!  (g 'add-node!))
    627627           (add-edge!  (g 'add-edge!))
    628            (oru-list  (filter (lambda (sym) (let ((x (environment-ref oru-env sym)))
     628           (nemo-list  (filter (lambda (sym) (let ((x (environment-ref nemo-env sym)))
    629629                                               (or (isstate? x) (isdep? x))))
    630                                (environment-symbols oru-env)))
    631            (oru-ids      (list-tabulate (length oru-list) identity))
    632            (name->id-map  (zip oru-list oru-ids)))
     630                               (environment-symbols nemo-env)))
     631           (nemo-ids      (list-tabulate (length nemo-list) identity))
     632           (name->id-map  (zip nemo-list nemo-ids)))
    633633      (let-values (((state-list asgn-list) 
    634                     (partition (lambda (sym) (isstate? (environment-ref oru-env sym)))
    635                                oru-list)))
     634                    (partition (lambda (sym) (isstate? (environment-ref nemo-env sym)))
     635                               nemo-list)))
    636636                 
    637637         ;; insert equations in the dependency graph
    638          (for-each (lambda (i n) (add-node! i n)) oru-ids oru-list)
     638         (for-each (lambda (i n) (add-node! i n)) nemo-ids nemo-list)
    639639         ;; create dependency edges in the graph
    640640         (for-each (lambda (e)
     
    643643                                                 (j (car (alist-ref nj name->id-map))))
    644644                                             (add-edge! (list i j (format "~A=>~A" ni nj))))))
    645                             (else (oru:error 'make-eqng ": invalid edge " e))))
     645                            (else (nemo:error 'make-eqng ": invalid edge " e))))
    646646                   (fold (lambda (qsym ax)
    647                            (let* ((q   (environment-ref oru-env qsym))
     647                           (let* ((q   (environment-ref nemo-env qsym))
    648648                                  (rhs (qrhs q)))
    649649                             (if rhs
    650650                                 (let* ((deps (filter (if (isstate? q)
    651651                                                          (lambda (sym)
    652                                                             (and (let ((x (environment-ref oru-env sym)))
     652                                                            (and (let ((x (environment-ref nemo-env sym)))
    653653                                                                   (and (isdep? x) (not (eq? sym qsym))))))
    654654                                                          (lambda (sym)
    655                                                             (and (let ((x (environment-ref oru-env sym)))
     655                                                            (and (let ((x (environment-ref nemo-env sym)))
    656656                                                                   (isdep? x)))))
    657657                                                      (enumdeps rhs)))
     
    659659                                   (if edges (append edges ax) ax))
    660660                                 ax)))
    661                          (list) oru-list))
     661                         (list) nemo-list))
    662662         (let ((cycles (graph-cycles-fold g (lambda (cycle ax) (cons cycle ax)) (list))))
    663663           (if (null? cycles) (list state-list asgn-list g)
    664                (oru:error 'make-eqng ": equation cycle detected: " (car cycles)))))))
     664               (nemo:error 'make-eqng ": equation cycle detected: " (car cycles)))))))
    665665
    666666
     
    681681
    682682
    683   (define (make-eval-poset oru-env eqposet)
     683  (define (make-eval-poset nemo-env eqposet)
    684684    (vector-map
    685685       (lambda (i lst)
    686686         (filter-map (lambda (id+sym)
    687687                       (let* ((sym  (cdr id+sym))
    688                               (x    (environment-ref oru-env sym)))
    689                          (and (oru:quantity? x)
    690                               (cases oru:quantity x
     688                              (x    (environment-ref nemo-env sym)))
     689                         (and (nemo:quantity? x)
     690                              (cases nemo:quantity x
    691691                                     (TSCOMP (name initial open transitions)
    692692                                             (let ((rs (map cadddr transitions)))
     
    694694                                     (ASGN  (name value rhs)
    695695                                            (list 'a sym rhs))
    696                                      (else oru:error 'make-eval-poset
     696                                     (else nemo:error 'make-eval-poset
    697697                                           ": invalid quantity in equation poset: " sym)))))
    698698                     lst))
     
    707707                            (if (ee c) (ee t) (ee f))
    708708                            [var ()
    709                                (oru:error 'eval-expr " exception in " expr ": \n"
     709                               (nemo:error 'eval-expr " exception in " expr ": \n"
    710710                                          (lambda () (print-error-message var)))])))
    711711
     
    716716                            (apply op args))
    717717                          [var ()
    718                                (oru:error 'eval-expr " exception in " expr ": \n"
     718                               (nemo:error 'eval-expr " exception in " expr ": \n"
    719719                                          (lambda () (print-error-message var)))]))
    720720                       
     
    722722                         (cond ((symbol? s) (environment-ref env s))
    723723                               ((number? s) s)
    724                                (else (oru:error 'eval-expr "unknown expression " s)))))))
     724                               (else (nemo:error 'eval-expr "unknown expression " s)))))))
    725725        val)))
    726726
    727727
    728   (define (depgraph oru-env)
    729     (match-let (((state-list asgn-list g)  (make-eqng oru-env))) g))
    730 
    731   (define (depgraph* oru-env)
    732     (match-let (((state-list asgn-list g)  (make-eqng oru-env)))
     728  (define (depgraph nemo-env)
     729    (match-let (((state-list asgn-list g)  (make-eqng nemo-env))) g))
     730
     731  (define (depgraph* nemo-env)
     732    (match-let (((state-list asgn-list g)  (make-eqng nemo-env)))
    733733               (list state-list asgn-list g)))
    734734
    735735
    736736  ;; Dispatcher
    737   (define (oru-dispatch selector)
     737  (define (nemo-dispatch selector)
    738738    (case selector
    739739      ((add-external!)     add-external!)
     
    763763      ((extended-with-tag)   extended-with-tag)
    764764      (else
    765        (oru:error 'selector ": unknown message " selector " sent to an oru-core object"))))
    766 
    767   oru-dispatch)
    768 
    769 (define oru:env-copy environment-copy)
     765       (nemo:error 'selector ": unknown message " selector " sent to an nemo-core object"))))
     766
     767  nemo-dispatch)
     768
     769(define nemo:env-copy environment-copy)
    770770
    771771(define qcounter 0)
     
    776776    (string->symbol (string-append (->string prefix) (number->string v)))))
    777777
    778 (define (eval-oru-system-decls oru-core name sys declarations)
    779   (define (eval-const x) (and x ((oru-core 'eval-const) sys x)))
     778(define (eval-nemo-system-decls nemo-core name sys declarations)
     779  (define (eval-const x) (and x ((nemo-core 'eval-const) sys x)))
    780780  (let loop ((ds declarations) (qs (list)))
    781781    (if (null? ds) qs
     
    788788                                            (match x
    789789                                                   ((? symbol?) 
    790                                                     (((oru-core 'add-external!) sys) x `(input ,x ,x #f))
     790                                                    (((nemo-core 'add-external!) sys) x `(input ,x ,x #f))
    791791                                                    (cons x ax))
    792792                                                   ((id1 'as x1)
    793                                                     (((oru-core 'add-external!) sys) x `(input ,id1 ,x1 #f))
     793                                                    (((nemo-core 'add-external!) sys) x `(input ,id1 ,x1 #f))
    794794                                                    (cons x1 ax))
    795795                                                   ((id1 'from n1)
    796                                                     (((oru-core 'add-external!) sys) x `(input ,id1 ,id1 ,n1))
     796                                                    (((nemo-core 'add-external!) sys) x `(input ,id1 ,id1 ,n1))
    797797                                                    (cons id1 ax))
    798798                                                   ((id1 'as x1 'from n1)
    799                                                     (((oru-core 'add-external!) sys) x `(input ,id1 ,x1 ,n1))
     799                                                    (((nemo-core 'add-external!) sys) x `(input ,id1 ,x1 ,n1))
    800800                                                    (cons x1 ax))
    801801                                                   ))
    802802                                          qs lst))
    803                                    (else (oru:error 'eval-oru-system-decls
     803                                   (else (nemo:error 'eval-nemo-system-decls
    804804                                                        "import statement must be of the form: "
    805805                                                        "input id1 [as x1] ... "))))
     
    808808                            (('output . lst)
    809809                             (cond ((every symbol? lst) 
    810                                     (for-each (lambda (x) (((oru-core 'add-external!) sys) x 'output)) lst)
     810                                    (for-each (lambda (x) (((nemo-core 'add-external!) sys) x 'output)) lst)
    811811                                    qs)
    812                                    (else (oru:error 'eval-oru-system-decls
     812                                   (else (nemo:error 'eval-nemo-system-decls
    813813                                                        "export statement must be of the form: "
    814814                                                        "output id1 ... "))))
     
    818818                             (cond ((and (symbol? id) (or (number? expr) (list? expr)))
    819819                                    (let ((val (eval-const expr)))
    820                                       (((oru-core 'env-extend!) sys) id '(const) val)
     820                                      (((nemo-core 'env-extend!) sys) id '(const) val)
    821821                                      (cons id qs)))
    822                                    (else (oru:error 'eval-oru-system-decls
     822                                   (else (nemo:error 'eval-nemo-system-decls
    823823                                                        "constant declarations must be of the form: "
    824824                                                        "const id = expr"))))
     
    829829                                    (let ((initial (eval-const (lookup-def 'initial alst)))
    830830                                          (power   (eval-const (lookup-def 'power alst))))
    831                                       (apply ((oru-core 'env-extend!) sys)
     831                                      (apply ((nemo-core 'env-extend!) sys)
    832832                                             (cons* id '(tscomp) initial `(power ,power) alst)))
    833833                                    (cons id qs))
    834                                    (else (oru:error 'eval-oru-system-decls
     834                                   (else (nemo:error 'eval-nemo-system-decls
    835835                                                        "state complex declarations must be of the form: "
    836836                                                        "state-complex (id ...)"))))
     
    839839                            ((id '= expr)
    840840                             (cond ((and (symbol? id) (or (symbol? expr) (number? expr) (list? expr)))
    841                                     (((oru-core 'env-extend!) sys) id '(asgn) 'none `(rhs ,expr))
     841                                    (((nemo-core 'env-extend!) sys) id '(asgn) 'none `(rhs ,expr))
    842842                                    (cons id qs))
    843                                    (else (oru:error 'eval-oru-system-decls
     843                                   (else (nemo:error 'eval-nemo-system-decls
    844844                                                        "algebraic declarations must be of the form: "
    845845                                                        "id = expr"))))
     
    848848                            (('defun id idlist expr)
    849849                             (cond ((and (symbol? id) (list? idlist) (every symbol? idlist) (list? expr))
    850                                     (((oru-core 'defun!) sys) id idlist expr)
     850                                    (((nemo-core 'defun!) sys) id idlist expr)
    851851                                    (cons id qs))
    852                                    (else (oru:error 'eval-oru-system-decls
     852                                   (else (nemo:error 'eval-nemo-system-decls
    853853                                                        "function declarations must be of the form: "
    854854                                                        "defun id (arg1 arg2 ...) expr"))))
    855855                           
    856                             ;; compiled coru primitives
     856                            ;; compiled cnemo primitives
    857857                            (('prim id value)
    858                              (cond ((symbol? id)  (((oru-core 'env-extend!) sys) id '(prim) value))
    859                                    (else (oru:error 'eval-oru-system-decls
     858                             (cond ((symbol? id)  (((nemo-core 'env-extend!) sys) id '(prim) value))
     859                                   (else (nemo:error 'eval-nemo-system-decls
    860860                                                        "prim declarations must be of the form: "
    861861                                                        "prim id value"))))
     
    878878                           
    879879                            (('sysname name)  (if (symbol? name)
    880                                                   (environment-set! sys (oru-intern 'name)      (SYSNAME name))
    881                                                   (oru:error 'eval-oru-system-decls
     880                                                  (environment-set! sys (nemo-intern 'name)      (SYSNAME name))
     881                                                  (nemo:error 'eval-nemo-system-decls
    882882                                                                 "system name must be a symbol")))
    883883                           
    884884                            (('const . _)
    885                              (oru:error 'eval-oru-system-decls "constant declarations must be of the form: "
     885                             (nemo:error 'eval-nemo-system-decls "constant declarations must be of the form: "
    886886                                            "const id = expr"))
    887887                           
    888888                            ((id '= . _)
    889                              (oru:error 'eval-oru-system-decls "algebraic equations must be of the form: "
     889                             (nemo:error 'eval-nemo-system-decls "algebraic equations must be of the form: "
    890890                                            "id = expr"))
    891891                           
    892892                            (('state-complex . _)
    893                              (oru:error 'eval-oru-system-decls
     893                             (nemo:error 'eval-nemo-system-decls
    894894                                            "state complex declarations must be of the form: "
    895895                                            "state-complex (id ...)"))
    896896                           
    897897                            (('defun . _)
    898                              (oru:error 'eval-oru-system-decls "function declarations must be of the form: "
     898                             (nemo:error 'eval-nemo-system-decls "function declarations must be of the form: "
    899899                                            "defun id (arg1 arg2 ...) expr"))
    900900                           
    901901                            (('prim . _)
    902                              (oru:error 'eval-oru-system-decls "prim declarations must be of the form: "
     902                             (nemo:error 'eval-nemo-system-decls "prim declarations must be of the form: "
    903903                                            "prim id value"))
    904904                           
    905905                            (('component . _) 
    906                              (oru:error 'eval-oru-system-decls "invalid component: " decl))
     906                             (nemo:error 'eval-nemo-system-decls "invalid component: " decl))
    907907                           
    908908                            (('sysname . _) 
    909                              (oru:error 'eval-oru-system-decls "system name must be of the form (sysname name)"))
     909                             (nemo:error 'eval-nemo-system-decls "system name must be of the form (sysname name)"))
    910910                           
    911911                            ;; anything that doesn't match is possibly
    912                             ;; declarations recognized by the oru extension
     912                            ;; declarations recognized by the nemo extension
    913913                            ;; modules
    914914                            ((tag  . lst)
     
    927927                                                           (else  (list (reverse ax) #f lst)))))))
    928928                                             (let ((name (or name (qname tag))))
    929                                                (((oru-core 'env-extend!) sys) name  typ alst)
     929                                               (((nemo-core 'env-extend!) sys) name  typ alst)
    930930                                               (cons name qs)))
    931                                  (oru:error 'eval-oru-system-decls "extended declarations must be of the form: "
     931                                 (nemo:error 'eval-nemo-system-decls "extended declarations must be of the form: "
    932932                                                "declaration (name (properties ...)"))))))
    933933                           
Note: See TracChangeset for help on using the changeset viewer.