#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/sf/make.scm,v 4.12 1990/06/11 16:34:32 jinx Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/sf/make.scm,v 4.13 1990/06/13 22:20:02 jinx Exp $
Copyright (c) 1988, 1989, 1990 Massachusetts Institute of Technology
(package/system-loader "sf" '() 'QUERY)
((package/reference (find-package '(SCODE-OPTIMIZER))
'USUAL-INTEGRATIONS/CACHE!))
-(add-system! (make-system "SF" 4 12 '()))
\ No newline at end of file
+(add-system! (make-system "SF" 4 13 '()))
\ No newline at end of file
#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/sf/pardec.scm,v 4.2 1988/10/30 14:31:20 jinx Rel $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/sf/pardec.scm,v 4.3 1990/06/13 22:19:38 jinx Rel $
Copyright (c) 1988 Massachusetts Institute of Technology
(values (cons name names) (cons value vals)))))))))
(lambda (names vals)
(bind/values table/cons table 'INTEGRATE true names vals)))))
+\f
+#|
+The following are allowed:
+
+symbol ; obvious.
+(symbol) ; obvious.
+(symbol1 symbol2) ; use symbol1 for primitive named symbol2.
+(symbol number) ; primitive symbol has arity number.
+(symbol1 symbol2 number) ; use symbol1 for primitive named symbol2
+ ; with arity number.
+
+|#
(define (parse-primitive-specification block specification)
block ;ignored
- (let ((finish
- (lambda (variable-name primitive-name)
+ (let ((fail
+ (lambda ()
+ (error "Bad primitive specification" specification)))
+ (finish
+ (lambda (variable-name arguments)
(values variable-name
(constant->integration-info
- (make-primitive-procedure primitive-name))))))
- (cond ((and (pair? specification)
- (symbol? (car specification))
- (pair? (cdr specification))
- (symbol? (cadr specification))
- (null? (cddr specification)))
- (finish (first specification) (second specification)))
- ((symbol? specification) (finish specification specification))
- (else (error "Bad primitive specification" specification)))))
+ (apply make-primitive-procedure arguments))))))
+ (cond ((symbol? specification)
+ (finish specification (list specification)))
+ ((or (not (pair? specification))
+ (not (symbol? (car specification))))
+ (fail))
+ ((null? (cdr specification))
+ (finish (car specification) specification))
+ ((not (null? (cddr specification)))
+ (if (and (null? (cdddr specification))
+ (symbol? (cadr specification))
+ (number? (caddr specification)))
+ (finish (car specification) (cdr specification))
+ (fail)))
+ ((symbol? (cadr specification))
+ (finish (car specification) (cdr specification)))
+ ((number? (cadr specification))
+ (finish (car specification) specification))
+ (else
+ (fail)))))
\f
;;; Special declarations courtesy JRM
;;; I return the operations table unmodified, but bash on the
#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/sf/make.scm,v 4.12 1990/06/11 16:34:32 jinx Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/sf/make.scm,v 4.13 1990/06/13 22:20:02 jinx Exp $
Copyright (c) 1988, 1989, 1990 Massachusetts Institute of Technology
(package/system-loader "sf" '() 'QUERY)
((package/reference (find-package '(SCODE-OPTIMIZER))
'USUAL-INTEGRATIONS/CACHE!))
-(add-system! (make-system "SF" 4 12 '()))
\ No newline at end of file
+(add-system! (make-system "SF" 4 13 '()))
\ No newline at end of file