Hot answers tagged

12

In this answer, I'll take "expressible" to mean "macro-expressible" in the sense of Felleisen 1991, On The Expressive Power of Programming Languages. (Intuitively, a language feature is macro-expressible if you can define it as a local source transformation, without using a whole-program transformation.) With this definition, the answer is no: delimited ...


5

To answer your question we need some machinery and concepts from the theory of programming languages, so that we can actually make your question well posed, and then answer it. You are asking whether two pieces of code are observationally equivalent. It is usually quite hard to determine observational equivalence with direct methods (and the sort of ...


2

The terms of the lambda calculus essentially represent a subset of scheme terms. For instance, most people would agree that (lambda (x) (x x)) is a term in the lambda calculus and also in scheme, and also that they mean "similar" things. When it comes to evaluation things get a bit more interesting; the lambda calculus, in its purest form, consists of a ...


2

First, this entirely depends on what you take to be your set of contexts. If (quote []) is a context, then contextual equivalence is syntactic equivalence. Traditionally, contexts for contextual equivalence are taken to be contexts in which "expressions", in whatever meaning that has in the language, can appear. This rules out contexts like "[]", where the ...


1

I think you might be misreading those rewrite rules. A call to shift will find to the nearest enclosing call to reset, regardless of how deeply nested it is. Other examples in the tutorial you linked to should confirm that. The Racket Reference has a slightly different set of rewrite rules for reset/shift, that might make things a little clearer. (reset ...


Only top voted, non community-wiki answers of a minimum length are eligible