diff options
| author | 2025-02-24 15:29:00 -0500 | |
|---|---|---|
| committer | 2025-02-24 15:29:00 -0500 | |
| commit | 923b07c725547b38727c05649a6274e4fd77fb7e (patch) | |
| tree | 0a3ba39f6763e54e0dc367f3f1b795df77f9c551 /SAHP.internal-portable.scm | |
dispatch on types with multiple scopes
Diffstat (limited to 'SAHP.internal-portable.scm')
| -rw-r--r-- | SAHP.internal-portable.scm | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/SAHP.internal-portable.scm b/SAHP.internal-portable.scm new file mode 100644 index 0000000..3174f4c --- /dev/null +++ b/SAHP.internal-portable.scm @@ -0,0 +1,34 @@ +#| Copyright 2024 Peter McGoron + | + | Licensed under the Apache License, Version 2.0 (the "License"); + | + | you may not use this file except in compliance with the License. + | You may obtain a copy of the License at + | + | http://www.apache.org/licenses/LICENSE-2.0 + | + | Unless required by applicable law or agreed to in writing, software + | distributed under the License is distributed on an "AS IS" BASIS, + | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + | See the License for the specific language governing permissions and + | limitations under the License. + |# + +#| A portable implementation of `extract-SAHP-descriptor`, `make-new-SAHP` + using a unexported sentinel object. +|# + +(define SAHP-sentinel-value + (vector #f)) + +(define (extract-SAHP-descriptor SAHP) + (SAHP SAHP-sentinel-value)) + +(define (make-new-SAHP) + (let ((SAHP (make-SAHP-descriptor (make-symbol-mapping) + (make-parameter (make-symbol-mapping)) + (make-symbol-hash-table))))) + (lambda (arg1 . arg-rest) + (if (eq? arg1 SAHP-sentinel-value) + SAHP + (call-SAHP SAHP (type-of arg1) (cons arg1 arg-rest))))) |
