2007
DOI: 10.1007/978-3-540-71316-6_29
|View full text |Cite
|
Sign up to set email alerts
|

A Rewriting Semantics for Type Inference

Abstract: Abstract. When students first learn programming, they often rely on a simple operational model of a program's behavior to explain how particular features work. Because such models build on their earlier training in algebra, students find them intuitive, even obvious. Students learning type systems, however, have to confront an entirely different notation with a different semantics that many find difficult to understand.In this work, we begin to build the theoretical underpinnings for treating type checking in … Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
14
0

Year Published

2007
2007
2013
2013

Publication Types

Select...
2
2
2

Relationship

2
4

Authors

Journals

citations
Cited by 13 publications
(14 citation statements)
references
References 27 publications
0
14
0
Order By: Relevance
“…The abstract machines that we use here are simplified versions of the abstract machines used in an earlier paper [4], where we were viewing type checking and inference as a term-rewriting system that incrementally transformed expressions into their types. The abstract machines described below express type inference as a process of nonstandard evaluation of expressions, yielding their types.…”
Section: An Abstract Machine For Classic Algorithm Wmentioning
confidence: 99%
“…The abstract machines that we use here are simplified versions of the abstract machines used in an earlier paper [4], where we were viewing type checking and inference as a term-rewriting system that incrementally transformed expressions into their types. The abstract machines described below express type inference as a process of nonstandard evaluation of expressions, yielding their types.…”
Section: An Abstract Machine For Classic Algorithm Wmentioning
confidence: 99%
“…extend (x , arg_type , gamma ))) in T_ARR ( arg_type , body_type ) end | check0 ( APP (e1 , e2 ), gamma ) = let val T_ARR (t1 , t2 ) = check0 (e1 , gamma ) val arg_type = check0 (e2 , gamma ) in if arg_type = t1 then t2 else raise ( TYPING_ERROR " type mismatch ") end ( * type_check : term -> typ * ) fun type_check t = check0 (t , TEnv . empty ) 2 In order to keep to the uniform approach for different semantics for type inference [17,25], we leave environments parametrized by the type parameter 'a, which is instantiated with typ in this case.…”
Section: Type Checking Proceduresmentioning
confidence: 99%
“…Reduction semantics for type checking, proposed initially by Kuan et al [17], is another operational view on type inference algorithms. Defined as a set of term-reduction rules, such a termrewriting system gives an operational view on the semantics of type checking, which is useful for debugging complex type systems, since the developer can trace each step of the type computation.…”
Section: Related Workmentioning
confidence: 99%
“…takes the time shown in columns 3-7 to be type checked using OCaml (version 3.10.1), Haskell (ghci version 6.8.2), SML/NJ (version 110.67), our K definition executed in Maude (version 2.3), the PLT-Redex definition of the W procedure [4], and an "off-the-shelf" implementation of W using OCaml [32].…”
Section: Fig 4 Unificationmentioning
confidence: 99%