KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I received an unexpected result when redefining the + operator in a scheme program using guile . I should point out that this occurred while experimenting to try to understand the language; there's no attempt here to write a useful program. Here's the code: (define (f a b) 4) (define (show) (display (+ 2 2)) (display ",") (display (f 2 2)) (newline)) (show) ; guile & mit-scheme: "4,4" (define (+ a b) 5) (define (f a b) 5) (show) ; mit-scheme: "5,5" ; guile: "4,5" - this "4" is the unexpected result (define (show) (display (+ 2 2)) (display ",") (display (f 2 2)) (newline)) (show) ; guile & mit-scheme: "5,5" In guile the function show uses the predefined definition of + even after I've redefined it, though it uses the new definition of f . I have to redefine show to get it to recognise the new definition of + . In mit-scheme both new definitions are recognised immediately, which is what I was expecting to happen. Also, any further definitions of + are instantly recognised by both interpreters without having to redefine show . What's going on behind the scenes in guile to make it bind references to these redefined operators differently? And why the difference between the two interpreters?
Tags (comma-separated)
Save Edits
Cancel