guile-srfi-123

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 55dcfebb456e5817a9809e82d31ef330c62026ed
parent be91cf2800f2cd71d5eb71b90774a5dbab506193
Author: Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
Date:   Fri, 14 Aug 2015 10:09:22 +0200

Integrate with SRFI-17.

Diffstat:
Mgeneric-ref-set.scm | 12+++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/generic-ref-set.scm b/generic-ref-set.scm @@ -16,12 +16,12 @@ ;; along with this program. If not, see <http://www.gnu.org/licenses/>. (import - (rename (scheme base) - (set! _set!) + (rename (except (scheme base) set!) (define-record-type _define-record-type)) (scheme case-lambda) (r6rs hashtables) - (srfi 1)) + (srfi 1) + (rename (srfi 17) (set! _set!))) ;;; Helpers @@ -55,13 +55,15 @@ (define-syntax set! (syntax-rules () - ((set! <var> <val>) - (_set! <var> <val>)) + ((set! <place> <expression>) + (_set! <place> <expression>)) ((set! <object> <field> <value>) (let* ((object <object>) (setter (lookup-setter object))) (setter object <field> <value>))))) +(set! (setter ref) (lambda (object field value) (set! object field value))) + (define (lookup-getter object) (let ((entry (assv (type-of object) getter-table))) (if entry