Mads Tofte

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

Mads Tofte
Born (1959-04-20) 20 April 1959 (age 60)
Lyngby, Denmark
Known forStandard ML
IT University of Copenhagen
AwardsIT prisen 2002
Scientific career
FieldsComputer Science
InstitutionsCopenhagen University
University of Edinburgh
University of Nigeria
IT University of Copenhagen
ThesisOperational semantics and polymorphic type inference (1987)
Doctoral advisorRobin Milner

Mads Tofte (born 20 April 1959) is a Danish computer scientist who has contributed in particular to functional programming and the Standard ML programming language.


Tofte was born in Lyngby, Denmark and grew up in Holbæk, Denmark. He studied computer science and mathematics at the University of Copenhagen where he obtained an MSc degree (with supervisor Neil D. Jones) in 1984; then at University of Edinburgh where he obtained a PhD degree in 1988 (advised by Robin Milner). He is doctor honoris causa 2007 from Kingston University.

Research and career[edit]

In his 1984 MSc thesis[1] and prior work he investigated and formalized the CERES compiler generator (with Neil D. Jones), and showed that (1) a compiler generator is itself a compiler from language definitions to compilers; and (2) under suitable assumptions there exists a language definition that, when applied to itself, generates a compiler generator. This has close connections to self-application in partial evaluation.

In his PhD thesis he developed and proved correct the first sound type system for ML-style polymorphic references, an important open problem at the time. Moreover, he formalized a variant of the module system of the Standard ML programming language.

Mads Tofte is a co-author of the Definition[2] of Standard ML and the associated Commentary, probably the most precise description developed for any realistic programming language. He co-developed the ML Kit, an implementation of Standard ML whose structure closely follows the Definition.

Subsequently he developed (with Jean-Pierre Talpin) the notion of region inference, a program analysis and memory management technique that avoids or minimizes the use of garbage collection. This work was first published[3] in POPL 1994 and in 2005 it earned the Association for Computing Machinery (ACM) POPL 1994 Most Influential Paper Award.

In the late nineties he co-developed (with Fritz Henglein and others) a type system and a sophisticated tool called AnnoDomini for mitigation of the Year 2000 problem in COBOL software. The tool analyses legacy programs to discover all data fields that are used as dates. This work was presented in a POPL 1999 invited keynote.[4]

In April 1999 he was appointed the first managing director of the IT University of Copenhagen. He oversaw the creation of the university from scratch, the hiring of faculty/staff, recruitment of students and the design of the study programs. The first students started 5 months later in September 1999. Since 2003 he has been vice chancellor of the IT University of Copenhagen.

In April 2018 it was announced that he would leave The IT University of Copenhagen at the end of the year. In January 2019, he announced that he would sail off from Denmark, to be with his daughter, as a consequence of Denmark's immigration laws, which prevented her from entering the country.[5]



  1. ^ M. Tofte: Compiler Generators: What They Can Do, What They Might Do, and What They Will Probably Never Do. Springer-Verlag 1990
  2. ^ R. Milner, M. Tofte, R. Harper: The Definition of Standard ML, MIT Press 1990, second edition 1997
  3. ^ M. Tofte and J.-P. Talpin: Implementation of the Typed Call-by-Value lambda-calculus using a Stack of Regions, In Proceedings of POPL 1994
  4. ^ P.H. Eidorff, F. Henglein, C. Mossin, H. Niss, M.H. Sørensen, M. Tofte: AnnoDomini: From type theory to year 2000 conversion tool. In Proceedings of POPL 1999
  5. ^ Tofte, Mads. "Jeg forlader nu Danmark i protest mod de ekstreme regler, der forhindrer, at min afrikanske adoptivdatter kommer til landet". Politiken. Retrieved 28 January 2019.

External links[edit]