5 — Racket Languages 2
Due Tuesday, 13 Feb; 9:00am
; Problem Set 5 ; Lastname1, Firstname1 ; Lastname2, Firstname2
5-lastname1-lastname2-0.rkt, for the Defined language,
5-lastname1-lastname2-ns-l.rkt, for the revised language implementation,
5-lastname1-lastname2-ns-i.rkt, for the revised language client file,
5-lastname1-lastname2-maze.rkt, for the maze navigation language, and
5-lastname1-lastname2-maze.txt, a plain text file, that documents the maze navigation language.
Problem 0 Develop Defined, a Racket-like language, which pushes all definitions to the top of a module (in order) and leaves all expressions in place (in order). That is, it synthesizes a Racket module that consists of a sequence of definitions followed by a sequence of expressions. These definitions may include syntax (compile-time) functions that expand other top-level forms into define, and your language implementation must account for those too.
|
|
|
Problem 1 Modify the syntactic
network language so that it also exports as much functionality as possible
from Racket. This will allow "network syn lang" programmers—
Note The purpose of this first step is to explore Racket’s capabilities of importing identifiers into modules, and exporting them from a module. This is a reasonably sophisticated sub-language all by itself.
Once you can use Racket’s argmax and argmin, develop a use case where the client program uses some other function. Demonstrate that it works with a modified client file.
Problem 2 Design a Racket-y languageMeaning a language that uses Racket’s beautiful syntax for navigating mazes like those in figure 2.
is there a path from some specific entrance to a particular exit, or
how can I get to some specific place inside the maze from any entrance.
Design the language. Deposit any library with basic functionality as a submodule in the language-implementation file. Also create a brief plain-text file that documents your choices.