Talk Topics 2008
Afp
Schedule for the first mini talk session on Wednesday, 11 March 2009:
Schedule for the second mini-talk session on Monday, 6 April 2009:
This list below is still the list of the course. It may nevertheless serve
as a source of ideas for picking your mini-talk topic.
This page lists possible topics for mini-talks plus a short description and relevant
links and papers.
Haskell Development
SmallCheck and Lazy SmallCheck
SmallCheck and Lazy SmallCheck are variants of QuickCheck that perform exhaustive
rather than random testing.
Homepage:
http://www-users.cs.york.ac.uk/~mfn/lazysmallcheck/
Catch
From the manual: "Catch is a tool for checking that a piece of Haskell code does not have any inexhaustive pattern matches, and will not fail at runtime with a pattern match error.
For the purposes of Catch, the includes things like passing the empty list to head, or division by zero."
The tool requires Yhc (the York Haskell Compiler).
Homepage:
http://www-users.cs.york.ac.uk/~ndm/catch
Also check out Neil Mitchell's blog.
Hoogle
Hoogle is a Haskell API search engine, written by Neil Mitchell. It allows you to search by either name, or by approximate type signature.
Homepage:
http://www.haskell.org/haskellwiki/Hoogle
Also check out Neil Mitchell's blog.
IOSpec
From the homepage:
"IOSpec is a library containing a pure specification of several functions in the IO monad. You can use these specifications to test, debug, and reason about impure code."
Homepage:
http://www.cs.nott.ac.uk/~wss/repos/IOSpec/
Paper:
http://www.cs.nott.ac.uk/~wss/Publications/BeautyInTheBeast.pdf
lhs2TeX
lhs2TeX is a preprocessor to generate LaTeX code from literate Haskell sources.
Homepage:
http://people.cs.uu.nl/andres/lhs2tex
Shuffle
From the homepage: "Shuffle is a tool for manipulating source fragments."
Distributed as a part of EHC (Essential Haskell Compiler).
Homepage:
http://www.cs.uu.nl/wiki/Ehc/Shuffle
HaRe
HaRe is a refactoring tool for Haskell.
Might be difficult to get running, but lots of material available.
Homepage:
http://www.cs.kent.ac.uk/projects/refactor-fp/hare.html
lambdabot
From the homepage:
"Lambdabot is a Haskell development tool, written in Haskell. It operates as a command line tool, embedded in an editor, embedded in GHCi, via internet relay chat and on the web."
Homepage:
http://www.cse.unsw.edu.au/~dons/lambdabot.html
EclipseFP
From the homepage:
"We extend the Eclipse IDE with tools for development in Haskell, a functional programming language, providing support for a wide range of tools (compilers, interpreters, doc tools etc.) in a coherent, convenient and configurable environment."
Requires Eclipse:
Homepage:
http://eclipsefp.sourceforge.net
Presentation:
http://leiffrenzel.de/papers/eclipsefp-icfp2007-presentation.pdf
Hat
From the homepage: "Hat is a source-level tracer for Haskell 98, the standard lazy functional programming language. Hat is a tool that gives the user access to otherwise invisible information about a computation."
Might be difficult to get running with current compilers, but lots of material available.
Homepage:
http://www.haskell.org/hat/
Publications:
http://www.haskell.org/hat/publications.html
There are also related systems that might be suitable for a mini-talk: Buddha (
http://www.cs.mu.oz.au/~bjpop/buddha/) and
HOOD (
http://www.haskell.org/hood/).
Libraries
Eros
From the homepage: "Eros enables higher-order functional programming via a visual, non-syntactic interface. Every component (basic value or function) is presented as a GUI-style visualization. In the case of functions, the visualizations are interactive, allowing the user/author to explore the domain and see corresponding range values. A value (usually function) and its visualization together form what I call a "tangible value" or "TV"."
Homepage:
http://haskell.org/haskellwiki/Eros
Movie of presentation:
http://www.youtube.com/watch?v=faJ8N0giqzw
Contracts
A library for behavioral contracts in Haskell.
Paper:
http://people.cs.uu.nl/andres/Contracts.html
Binary
Efficient, pure binary serialisation using lazy
ByteStrings? .
Little documentation, requires you to look at the actual code.
HackageDB:
http://hackage.haskell.org/cgi-bin/hackage-scripts/package/binary-0.4.1
Haskore
From the tutorial: "Haskore is a collection of Haskell modules designed for expressing musical structures in the high-level, declarative style of functional programming. In Haskore, musical objects consist of primitive notions such as notes and rests, operations to transform musical objects such as transpose and tempo-scaling, and operations to combine musical objects to form more complex ones, such as concurrent and sequential composition. From these simple roots, much richer musical ideas can easily be developed."
Homepage:
http://www.haskell.org/haskore/
Pan
A combinator language to describe images and animations.
Pan# requires the Microsoft .NET Framework.
Pan# homepage:
http://www.haskell.org/edsl/pansharp.html
X11 / xmonad
Bindings to the X11 window system and a minimalistic window
manager written in Haskell.
Homepage:
http://www.xmonad.org
Movie of presentation:
http://www.ludd.ltu.se/~pj/hw2007/xmonad.mov
Lava
From the homepage: "Lava is a hardware description language based upon the functional programming language Haskell. Its main aim is to show that modern programming language features such as type inference, polymorphism, higher-order functions, type classes, and laziness are very useful even in hardware description."
Homepage:
http://www.cs.chalmers.se/~koen/Lava/
Uniplate
A library for generic traversals in Haskell.
Homepage:
http://www-users.cs.york.ac.uk/~ndm/uniplate/
Language
Views / pattern guards
Views and pattern guards aim at strengthening the pattern language.
Views paper:
http://citeseer.ist.psu.edu/wadler86views.html
Old Views proposal:
http://www.haskell.org/development/views.html
Pattern guards paper:
http://citeseer.ist.psu.edu/299277.html
Implicit parameters
Implicit parameters are dynamically scoped variables in a Haskell-like type system.
GHC Users Guide:
http://cvs.haskell.org/Hugs/pages/users_guide/implicit-parameters.html
Paper:
http://citeseer.ist.psu.edu/lewis00implicit.html
MLF / impredicative polymorphism
Impredicative polymorphism allows polymorphic types to be instantiated
with polymorphic types, and data structures to be parameterized by polymorphic
types.
MLF papers:
http://citeseer.ist.psu.edu/lebotlan03raising.html,
http://portal.acm.org/citation.cfm?id=1086365.1086385
Impredicative polymorphism in Haskell:
http://research.microsoft.com/%7Esimonpj/papers/boxy/
Curry / functional logic programming
Curry is a hybrid programming language with concepts from both functional and
logic programming.
Homepage:
http://www.informatik.uni-kiel.de/~curry/
Open datatypes / open functions
A proposed extension to Haskell that allows datatypes and functions to be extensible.
Paper:
http://people.cs.uu.nl/andres/OpenDatatypes.html
Omega
A language variant of Haskell that has a much extended kind system.
Homepage:
http://web.cecs.pdx.edu/~sheard/Omega/index.html
Dependent types / Agda2
Agda2 is a programming language with a Haskell-inspired syntax and
dependent types.
Homepage:
http://appserv.cs.chalmers.se/users/ulfn/wiki/agda.php
STM
Software Transactional Memory (STM) is an abstraction for
concurrent communication.
Wiki with links to several papers:
http://www.haskell.org/haskellwiki/Software_transactional_memory
--
AndresLoeh - 31 Mar 2008