https://wiki.haskell.org/index.php?title=HaskellImplementorsWorkshop/2013/Jones&feed=atom&action=historyHaskellImplementorsWorkshop/2013/Jones - Revision history2024-03-29T15:33:33ZRevision history for this page on the wikiMediaWiki 1.35.5https://wiki.haskell.org/index.php?title=HaskellImplementorsWorkshop/2013/Jones&diff=56846&oldid=prevEdward Z Yang: Created page with "= Inhabiting Habit: An Introduction to the Habit Compiler = ''Mark Jones'' With a name that combines parts of "Ha"skell and "bit"s, Habit is a new functional programming lan..."2013-09-16T06:37:01Z<p>Created page with "= Inhabiting Habit: An Introduction to the Habit Compiler = ''Mark Jones'' With a name that combines parts of "Ha"skell and "bit"s, Habit is a new functional programming lan..."</p>
<p><b>New page</b></p><div>= Inhabiting Habit: An Introduction to the Habit Compiler =<br />
<br />
''Mark Jones''<br />
<br />
With a name that combines parts of "Ha"skell and "bit"s, Habit<br />
is a new functional programming language that is specifically<br />
designed for use in the construction of bare-metal systems<br />
software such as microkernels and device drivers. As such,<br />
Habit embraces key features of Haskell---from basic syntax to<br />
an extended type class mechanism with support for functional<br />
dependencies and instance chains---but also adds mechanisms<br />
for describing bit-level representations and low-level memory<br />
layout.<br />
<br />
In this talk, I will give an overview of the structure and<br />
implementation of the Habit compiler prototype, combining a<br />
front-end that is written in Haskell with a backend that reuses<br />
significant parts of the CompCert verified compiler for C that<br />
is written in Coq. In the process, I will also describe some<br />
of the more unusual aspects of the implementation, such as: the<br />
design of several intermediate languages; the use of an independent<br />
constraint solver in support of type inference; and a<br />
specialization phase that eliminates the need for a dictionary<br />
passing implementation of type classes and allows the use of<br />
type-specific, custom value representations.</div>Edward Z Yang