BYU - Spring 2013 - CS 630 - 06/06 - Review

0 views
Skip to first unread message

Yu Huang

unread,
Jun 5, 2013, 6:58:55 PM6/5/13
to byu-cs-630-...@googlegroups.com
Title: Languages as Libraries

Summary: The paper uses the extension ability of Racket to implement a small typed sister language to Racket. Section 1 first introduces the advantages of Racket compared with other languages. One of its significant features is the power of extending the language with contructs such as macros. Section 2 first uses several examples to show the power of macros. The essential part in macros is the syntax object. Section 2 then discusses how to manipulate syntax objects, including the forms and functions for constructing and manipulating, the method to put or get syntax properties and how to use local-expand to expand a syntax object to core Racket. It also provides two linguistic features for two aspects of the module system. In section 3, the paper provides several challenges for implementing typed Racket and describes those challenges with several examples. Section 4 presents an simple example with typed Racket syntax and semantics. It also shows the entire syntax of the typechecker and how it works. Section 5 further discusses the feature to support multiple modules that is not supported in section 4. Two steps are included in this procedure. First, using the existing Racket structure namespace management for maintaining the type within different modules. Second, the type information should be maintained in the compilations by including code in the resulting module that populates the type environment every time the module is required. Section 6 provides an approach to integrate a typed module and a untype module. One direction is to import from untyped modules and the other direction is to export to untyped modules. Section 7 then discusses how to optimize the typed Racket program so that the compiler for untyped Racket is able to handle it. The results show that typed Racket optimizer provides noticeable speedups on the benchmarks.

Things I understand well: I understand the advantages of Racket, how to integrate typed Racket with untyped Racket. 

Things I have trouble understanding: not very clear about the way to export to untyped modules in section 6.2. The syntax of the typechecker in Figure 3 is also not easy understanding. 

Reply all
Reply to author
Forward
0 new messages