Helium, for learning Haskell
@inproceedings{Heeren2003HeliumFL, title={Helium, for learning Haskell}, author={Bastiaan Heeren and Daan Leijen and Arjan van IJzendoorn}, booktitle={Haskell '03}, year={2003} }
Helium is a user-friendly compiler designed especially for learning the functional programming language Haskell. The quality of the error messages has been the main concern both in the choice of the language features and in the implementation of the compiler. Helium implements almost full Haskell, where the most notable difference is the absence of type classes. Our goal is to let students learn functional programming more quickly and with more fun. The compiler has been successfully employed…
96 Citations
Mining for Helium
- Computer Science
- 2006
A library in Haskell, called Neon, is developed for computing characteristics of this collection of Haskell programs written by students in a first-year functional programming course using the Helium compiler and presenting the results visually.
Mining Helium programs with Neon
- Computer Science
- 2007
A sizable library in Haskell, called Neon, is developed for computing characteristics of this collection of Haskell programs written by students in a first-year functional programming course using the Helium compiler.
Investigating Compilation Errors of Students Learning Haskell
- Computer ScienceTFPIE@TFP
- 2018
This study investigates compilation errors of novice Haskell students and makes suggestions on how their learning efficiency can be improved by uncovering the root problems with the student solutions by analysing samples of their submissions.
Heat — An Interactive Development Environment for Learning & Teaching Haskell
- Education
- 2008
Heat proves that a small portable interactive development environment can be implemented on top of but independent of a particular Haskell interpreter, and is used in teaching functional programming at the University of Kent.
The Helium Logging Facility
- Computer Science
- 2005
Parts of how the logging between the compiler implemented in Haskell and a specially built Java server proceeds are described, described mainly from a technical point of view: what is sent, how is it sent, and some of the safety measures the authors have taken to avoid misuse and abuse.
Analyzing Helium Programs Obtained Through Logging - The process of mining novice Haskell programs -
- Computer Science
- 2006
This document presents the work of collecting and analyzing the data sets, and is able to provide empirical evidence for claims that are hardly challenged in the research field of computer science and functional programming.
A Block Design for Introductory Functional Programming in Haskell
- Computer Science2019 IEEE Blocks and Beyond Workshop (B&B)
- 2019
The design of blocks for editing code in the functional language Haskell is described to help students learn Haskell’s sophisticated type system which is often regarded as challenging for novice functional programmers.
The architecture of the Utrecht Haskell compiler
- Computer ScienceHaskell
- 2009
The architecture of the Utrecht Haskell Compiler is described, which is a new Haskell compiler, that supports most (but not all) Haskell 98 features, plus some experimental extensions, plusSome experimental extensions.
Type Class Directives
- Computer SciencePADL
- 2005
Four type class directives, and specialized type rules are proposed to lend high-level support to compilers to improve the type error messages in the presence of Haskell 98 type classes.
HaskellFL: A Tool for Detecting Logical Errors in Haskell
- Computer Science
- 2021
HaskellFL, a tool that uses fault localization techniques to locate a logical error in Haskell code, is presented, and results showed that HaskellFL reduced the effort needed to locate an error for all tested scenarios.
References
SHOWING 1-10 OF 21 REFERENCES
Parametric Type Inferencing for Helium
- Computer Science
- 2002
This paper documents the implementation of the Helium type inferencer, a compiler for a large subset of Haskell under development at Universiteit Utrecht, which can be parameterized in a number of ways.
Scripting the type inference process
- Computer ScienceICFP '03
- 2003
It is shown how four techniques which influence the behaviour of constraint-based type inference processes can help to generate error messages which are conceptually closer to the domain for which the library was developed.
Haskell - the craft of functional programming
- Computer ScienceInternational computer science series
- 1996
The second edition of Haskell: The Craft of Functional Programming is essential reading for beginners to functional programming and newcomers to the Haskell programming language, with an emphasis on software engineering principles.
Freja, Hat and Hood - A Comparative Evaluation of Three Systems for Tracing and Debugging Lazy Functional Programs
- Computer ScienceIFL
- 2000
This paper compares three systems for tracing and debugging Haskell programs: Freja, Hat and Hood and identifies the strengths and weaknesses of each system and form ideas on how the systems can be improved further.
DrScheme: a programming environment for Scheme
- Computer ScienceJ. Funct. Program.
- 2002
Beyond the ordinary programming environment tools, DrScheme provides an algebraic stepper, a context-sensitive syntax checker, and a static debugger that explains specific inferences in terms of a value-flow graph, selectively overlaid on the program text.
Object-Oriented Style Overloading for Haskell
- Computer ScienceElectron. Notes Theor. Comput. Sci.
- 2001
Parsec: direct style monadic parser combinators for the real world
- Computer Science
- 2001
The Parsec parser combinator library described in this paper, utilizes a novel implementation technique for space and time e±cient parser combinators that in case of a parse error, report both the position of the error as well as all grammar productions that would have been legal at that point in the input.
Building program optimizers with rewriting strategies
- Computer ScienceICFP '98
- 1998
An extended language in which the side-conditions and contextual rules that arise in realistic optimizer specifications can themselves be expressed as strategy-driven rewrites, and a low-level core language which has a clear semantics, can be implemented straightforwardly and can itself be optimized.
Principal type-schemes for functional programs
- GeologyPOPL '82
- 1982
Permission to copy without fee all or part of this material is granted provided that the copies are not made or distributed for direct commercial advantage, the ACM copyright notice and the title of…