> From: Andre van Tonder <andre@xxxxxxxxxxxxxxxxx>
> - Functional update encourages functional style programming.
Simple example: A functional style account management system
;; close : (forall A: A<=Account). A -> A
(define (close acc)
(update-account acc (balance 0)))
Close will work on subtypes of the Account type, and returns a /new/
instance of the subtype with the balance field updated. UPDATE-ACCOUNT
is a macro.
This is a very natural thing to do in a functional language.
With the current SRFI, I can easily express the UPDATE-ACCOUNT macro
in terms of the given primitives, but because of the o(N) record length
operation, the copying of subtype fields will be less efficient than
it could be. So at least for this kind of thing, the SRFI seems to have
a bit of a bias against the functional way of solving the problem.
Cheers
Andre