2002
DOI: 10.1017/s0956796802004380
|View full text |Cite
|
Sign up to set email alerts
|

A static semantics for Haskell

Abstract: This paper gives a static semantics for Haskell 98, a non-strict purely functional programming language. The semantics formally specifies nearly all the details of the Haskell 98 type system, including the resolution of overloading, kind inference (including defaulting) and polymorphic recursion, the only major omission being a proper treatment of ambiguous overloading and its resolution. Overloading is translated into explicit dictionary passing, as in all current implementations of Haskell. The target l… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
16
0

Year Published

2004
2004
2014
2014

Publication Types

Select...
4
2
2

Relationship

0
8

Authors

Journals

citations
Cited by 26 publications
(16 citation statements)
references
References 8 publications
0
16
0
Order By: Relevance
“…We are unaware of a simple formulation of surface Haskell's type system and so have written this ourselves. There is other work in this area (Faxén 2002;Jones 1999), but the nature of the existing formulations makes them hard to adapt for our purposes. Note that the typing judgements presented here are different than that in work on GHC's core language FC (for example, Sulzmann et al (2007)), because we are working solely in surface Haskell.…”
Section: Type-correctnessmentioning
confidence: 99%
“…We are unaware of a simple formulation of surface Haskell's type system and so have written this ourselves. There is other work in this area (Faxén 2002;Jones 1999), but the nature of the existing formulations makes them hard to adapt for our purposes. Note that the typing judgements presented here are different than that in work on GHC's core language FC (for example, Sulzmann et al (2007)), because we are working solely in surface Haskell.…”
Section: Type-correctnessmentioning
confidence: 99%
“…Think of the Eq class, having mutually circular definitions of eq and ne, leaving it to the instance declaration to implement either one of them (or both). A clever scheme was designed by Faxén to generate the dictionary from a generator function that is parameterized by the dictionary containing the default implementations, while the default dictionary is generated from a generator function parameterized by the instance dictionary [13]. Lazy evaluation and black holes make this all work, and we employ this scheme in UHC too.…”
Section: Abstract Interpretationmentioning
confidence: 99%
“…Dictionary translation [2,23,24,25] is a technique frequently used to eliminate overloading introduced by type classes. Using this technique, type-class constraints are turned into extra parameters, so that evidence for these constraints can be passed explicitly at runtime.…”
Section: First-class Structures As Dictionariesmentioning
confidence: 99%