241 reputation
14
bio website brinckerhoff.org
location San Luis Obispo, CA
age 43
visits member for 3 years, 3 months
seen Sep 23 at 21:59

Racket Developer, A-Prof @ Cal Poly


Apr
17
comment In Scheme, what is formally a program's state?
That's true... unless you instead substitute memory locations, rather than values. That's an unusual combination, though, I agree.
Apr
17
comment In Scheme, what is formally a program's state?
In response to your second question: the environment is part of the state if you're using a model with environments. If you're using substitution, though, you don't need environments. Environments are a way of implementing substitution efficiently. It looks to me like you'd really get a lot out of Shriram Krishnamurthi's (free, online, PDF) textbook, "Programming Languages: Application and Interpretation"
Apr
17
comment In Scheme, what is formally a program's state?
Two responses, to your two comments. In your first comment, you're basically describing the difference between a "small-step" and "big-step" semantics; the first takes many small steps to get to the answer, the second takes one giant step to get to the answer.
Apr
15
comment In Scheme, what is formally a program's state?
All substitutions are going to require searching the whole program; naturally, an implementation would avoid (or amortize) this cost by using an environment. A semantics such as the one we're describing here is chosen for its simplicity, not for its performance.
Apr
1
comment In Scheme, what is formally a program's state?
Alternatively, you could go with a "labeled transition" semantics that attaches outputs to the arrows; basically, each step produces both a new expression and an optional output. If you're looking for a book, I think I'd probably recommend "Engineering Reduction Semantics with PLT Redex", by Findler/Felleisen/Flatt .
Apr
1
comment In Scheme, what is formally a program's state?
Well, you have two choices here. You can regard inputs and outputs as being "internal" to the model, or "external." In the first case, you'd probably use tricks like Morrisett/Felleisen/Harper to model external streams as mutable variables specified at the outside of the program. In the second case, you would probably model input operations as nondeterministic, and output operations as no-ops. more...
Aug
9
comment Is there a language more general than Lisp?
Sounds like you want to go read some programming language textbooks. I recommend PLAI and Benjamin Pierce's "Types and Programming Languages".
Jun
20
comment What implementation of Scheme is good for studying SICP?
Apologies if this is already obvious: DrScheme is the same thing as DrRacket. I also think that DrRacket with Neil Van Dyke's extensions is the right way to go, but then, I'm (extremely) biased.