Compilers: Principles, Techniques, and Tools
Citations
3,077 citations
2,631 citations
2,595 citations
Cites methods from "Compilers: Principles, Techniques, ..."
...elementclass MaybeChecksum { $checksum_p | input -> sw :: StaticSwitch($checksum_p); sw[0] -> CheckIPHeader2 -> output; sw[1] -> CheckIPHeader -> output; }; c1 :: MaybeChecksum(0); // uses CheckIPHeader2, skips checksum c2 :: MaybeChecksum(1); // uses CheckIPHeader, checks checksum...
[...]
...Click-align calculates alignments using a data flow analysis resembling availability analysis [1]....
[...]
...); rr :: RoundRobinSched; input -> hash; hash[0] -> Queue -> [0]rr; hash[1] -> Queue -> [1]rr; rr -> output; } HashSwitch(....
[...]
...elementclass VerboseCheckIPHeader { input -> c :: CheckIPHeader -> output; c[1] -> Print(CheckIPHeader) -> Discard; || input -> c :: CheckIPHeader -> output; c[1] -> Print(CheckIPHeader) -> [1]output; }...
[...]
...); rr :: RoundRobinSched; input -> hash; hash[0] -> Queue -> [0]rr; hash[1] -> Queue -> [1]rr; rr -> output; }...
[...]
2,391 citations
Cites background from "Compilers: Principles, Techniques, ..."
...Other expositions of type reconstruction algorithms can be found in Appel (1998), Aho et al. (1986), and Reade (1989). A particularly elegant presentation of the core system called mini-ML (Clement, Despeyroux, Despeyroux, and Kahn, 1986) often forms the basis for theoretical discussions. Tiuryn (1990) surveys a range of type reconstruction problems. Principal types should not be confused with the similar notion of principal typings. The difference is that, when we calculate principal types, the context Γ and term t are considered as inputs to the algorithm, while the principal type T is the output. An algorithm for calculating principal typings takes just t as input and yields both Γ and T as outputs—i.e., it calculates the minimal assumptions about the types of the free variables in t. Principal typings are useful in supporting separate compilation and “smartest recompilation,” performing incremental type inference, and pinpointing type errors. Unfortunately, many languages, in particular ML, have principal types but not principal typings. See Jim (1996). ML-style polymorphism, with its striking combination of power and simplicity, hits a “sweet spot” in the language design space; mixing it with other sophisticated typing features has often proved quite delicate....
[...]
...Other expositions of type reconstruction algorithms can be found in Appel (1998), Aho et al. (1986), and Reade (1989)....
[...]
...Other expositions of type reconstruction algorithms can be found in Appel (1998), Aho et al. (1986), and Reade (1989). A particularly elegant presentation of the core system called mini-ML (Clement, Despeyroux, Despeyroux, and Kahn, 1986) often forms the basis for theoretical discussions. Tiuryn (1990) surveys a range of type reconstruction problems. Principal types should not be confused with the similar notion of principal typings. The difference is that, when we calculate principal types, the context Γ and term t are considered as inputs to the algorithm, while the principal type T is the output. An algorithm for calculating principal typings takes just t as input and yields both Γ and T as outputs—i.e., it calculates the minimal assumptions about the types of the free variables in t. Principal typings are useful in supporting separate compilation and “smartest recompilation,” performing incremental type inference, and pinpointing type errors. Unfortunately, many languages, in particular ML, have principal types but not principal typings. See Jim (1996). ML-style polymorphism, with its striking combination of power and simplicity, hits a “sweet spot” in the language design space; mixing it with other sophisticated typing features has often proved quite delicate. The biggest success story in this arena is the elegant account of type reconstruction for record types proposed by Wand (1987) and further developed by Wand (1988, 1989b), Remy (1989, 1990; 1992a, 1992b, 1998), and many others. The idea is to introduce a new kind of variable, called a row variable, that ranges not over types but over entire “rows” of field labels and associated types. A simple form of equational unification is used solve constraint sets involving row variables. See Exercise 22.5.6. Garrigue (1994) and others have developed related methods for variant types....
[...]
...Other expositions of type reconstruction algorithms can be found in Appel (1998), Aho et al. (1986), and Reade (1989). A particularly elegant presentation of the core system called mini-ML (Clement, Despeyroux, Despeyroux, and Kahn, 1986) often forms the basis for theoretical discussions. Tiuryn (1990) surveys a range of type reconstruction problems. Principal types should not be confused with the similar notion of principal typings. The difference is that, when we calculate principal types, the context Γ and term t are considered as inputs to the algorithm, while the principal type T is the output. An algorithm for calculating principal typings takes just t as input and yields both Γ and T as outputs—i.e., it calculates the minimal assumptions about the types of the free variables in t. Principal typings are useful in supporting separate compilation and “smartest recompilation,” performing incremental type inference, and pinpointing type errors. Unfortunately, many languages, in particular ML, have principal types but not principal typings. See Jim (1996). ML-style polymorphism, with its striking combination of power and simplicity, hits a “sweet spot” in the language design space; mixing it with other sophisticated typing features has often proved quite delicate. The biggest success story in this arena is the elegant account of type reconstruction for record types proposed by Wand (1987) and further developed by Wand (1988, 1989b), Remy (1989, 1990; 1992a, 1992b, 1998), and many others....
[...]
...Other expositions of type reconstruction algorithms can be found in Appel (1998), Aho et al. (1986), and Reade (1989). A particularly elegant presentation of the core system called mini-ML (Clement, Despeyroux, Despeyroux, and Kahn, 1986) often forms the basis for theoretical discussions. Tiuryn (1990) surveys a range of type reconstruction problems....
[...]
2,372 citations
Cites background from "Compilers: Principles, Techniques, ..."
...A generic discussion of this technique, which is also known as ‘loop hoisting’, can be found in Alfred et al. (1986)....
[...]