The Stratego language supports program transformation by means of term rewriting with programmable rewriting strategies. Stratego's traversal primitives support concise definition of generic tree traversals. Stratego is a dynamically typed language because its features cannot be captured fully by a static type system. While dynamic typing makes for a flexible programming model, it also leads to unintended type errors, code that is harder to maintain, and missed opportunities for optimization. In this paper, we introduce a gradual type system for Stratego that combines the flexibility of dynamically typed generic programming, where needed, with the safety of statically declared and enforced types, where possible. To make sure that statically...
Dependently typed programming languages provide a way to write programs, specifications, and correct...
Static and dynamic type systems have well-known strengths and weaknesses, and each is better suited ...
Typestate reflects how the legal operations on imperative objects can change at runtime as their int...
Both static and dynamic typing provide different benefits to the programmer. Statically typed langua...
Stratego and the underlying system S are as yet untyped. We propose a type system which covers the e...
Static and dynamic type systems have well-known strengths and weaknesses. Gradual typing provides th...
Gradual type systems offer a smooth continuum between static and dynamic typing by permitting the fr...
Gradually typed languages offer both static and dynamic checking of program invariants, from simple ...
Gradual typing is a discipline for integrating dynamic checking into a static type system. Since its...
Program transformation is used in many areas of software engineering. Examples include compilation,...
Static and dynamic type systems have well-known strengths and weaknesses. Gradual typing provides th...
use of program operations. They can be classified as either static or dynamic depending on when they...
Statically typed programming languages allow earlier error checking, better enforcement of disciplin...
Dynamically typed languages languages are very well suited for rapid prototyping, agile programming ...
The Stratego language for program transformation is based on a strategy-controlled application of ba...
Dependently typed programming languages provide a way to write programs, specifications, and correct...
Static and dynamic type systems have well-known strengths and weaknesses, and each is better suited ...
Typestate reflects how the legal operations on imperative objects can change at runtime as their int...
Both static and dynamic typing provide different benefits to the programmer. Statically typed langua...
Stratego and the underlying system S are as yet untyped. We propose a type system which covers the e...
Static and dynamic type systems have well-known strengths and weaknesses. Gradual typing provides th...
Gradual type systems offer a smooth continuum between static and dynamic typing by permitting the fr...
Gradually typed languages offer both static and dynamic checking of program invariants, from simple ...
Gradual typing is a discipline for integrating dynamic checking into a static type system. Since its...
Program transformation is used in many areas of software engineering. Examples include compilation,...
Static and dynamic type systems have well-known strengths and weaknesses. Gradual typing provides th...
use of program operations. They can be classified as either static or dynamic depending on when they...
Statically typed programming languages allow earlier error checking, better enforcement of disciplin...
Dynamically typed languages languages are very well suited for rapid prototyping, agile programming ...
The Stratego language for program transformation is based on a strategy-controlled application of ba...
Dependently typed programming languages provide a way to write programs, specifications, and correct...
Static and dynamic type systems have well-known strengths and weaknesses, and each is better suited ...
Typestate reflects how the legal operations on imperative objects can change at runtime as their int...