#| 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)))))