| ▲ | Jtsummers an hour ago | |||||||
It's a common way to implement OO in Lisp-y languages, and it fits if you're taking Smalltalk as an inspiration. SICP has an example in chapter 3 (IIRC) of doing the same, but the selector had to be quoted as in: | ||||||||
| ▲ | so-cal-schemer 35 minutes ago | parent [-] | |||||||
Uses an internal lambda for dispatching on messages. We can also create objects that handle deposits as well as withdrawals, and thus we can represent simple bank accounts. Here is a procedure that returns a “bank-account object” with a specified initial balance:
Each call to make-account sets up an environment with a local state variable balance. Within this environment, make-account defines procedures deposit and withdraw that access balance and an additional procedure dispatch that takes a “message” as input and returns one of the two local procedures. The dispatch procedure itself is returned as the value that represents the bank-account object. This is precisely the message-passing style of programming that we saw in 2.4.3, although here we are using it in conjunction with the ability to modify local variables.3.1.1 Local State Variables https://sarabander.github.io/sicp/html/3_002e1.xhtml#g_t3_00... | ||||||||
| ||||||||