Learn More
The Microsoft.NET Common Language Runtime provides a shared type system, intermediate language and dynamic execution environment for the implementation and inter-operation of multiple source languages. In this paper we extend it with direct support for parametric polymorphism (also known as generics), describing the design through examples written in an(More)
Generic types in C behave invariantly with respect to sub-typing. We propose a system of type-safe variance for C that supports the declaration of covariant and contravariant type parameters on generic types. To support more widespread application of variance we also generalize the existing constraint mechanism with arbitrary subtype assertions on classes(More)
Parts I and II of this paper describe the extension and testing of two sets of Boussinesq-type equations to include surf zone phenomena. Part I is restricted to 1D tests of shoaling, breaking, and runup, while Part II deals with two horizontal dimensions. The model uses two main extensions to the Boussinesq equations: a momentum-conserving eddy viscosity(More)
We present a Coq formalization of constructive ω-cpos (extending earlier work by Paulin-Mohring) up to and including the inverse-limit construction of solutions to mixed-variance recursive domain equations , and the existence of invariant relations on those solutions. We then define operational and denotational semantics for both a simply-typed CBV language(More)
SML.NET is a compiler for Standard ML that targets the Common Language Runtime and is integrated into the Visual Studio development environment. It supports easy interoperability with other .NET languages via a number of language extensions, which go considerably beyond those of our earlier compiler, MLj.This paper describes the new language extensions and(More)
Generalized algebraic data types (GADTs) have received much attention recently in the functional programming community. They generalize the (type) parameterized algebraic datatypes (PADTs) of ML and Haskell by permitting value constructors to return specific, rather than parametric, type-instantiations of their own datatype. GADTs have a number of(More)
In this paper, we focus on the implementation and verification of an extended Boussinesq model for surf zone hydrodynamics in two horizontal dimensions. The time-domain numerical model is based on the fully nonlinear Boussinesq equations. As described in Part I of this two-part paper, the energy dissipation due to wave breaking is modeled by introducing an(More)
We present a series of CPS-based intermediate languages suitable for functional language compilation, arguing that they have practical benefits over direct-style languages based on <i>A</i>-normal form (ANF) or monads. Inlining of functions demonstrates the benefits most clearly: in ANF-based languages, inlining involves a re-normalization step that(More)
We give a denotational semantics to a type and effect system tracking reading and writing to global variables holding values that may include higher-order effectful functions. Refined types are modelled as partial equivalence relations over a recursively-defined domain interpreting the untyped language, with effect information interpreted in terms of the(More)
In this paper, we derive and test a set of extended Boussinesq equations with improved nonlinear performance. To do this, the concept of a reference elevation is further generalised to include a time-varying component that moves with the instantaneous free surface. It is found that, when compared to Stokes-type expansions of the second harmonic and fully(More)