Switch branches/tags
Nothing to show
Clone or download
Latest commit 07b0f46 Sep 18, 2016
Type Name Latest commit message Commit time
Failed to load latest commit information.
.hgignore Added John Wiegley as contributor to the lang pragma snippet. Jun 20, 2013
README.md Added GHC options pragma snippet. May 2, 2015
haskell-snippets.el Use cl-lib (fixes haskell#6) Sep 18, 2016



Haskell-Snippets is a collection of YASnippet Haskell snippets for Emacs.


Enable the Emacs package manager and make sure the melpa package repository is set up.

(require 'package)
(add-to-list 'package-archives
             '("melpa" . "http://melpa.milkbox.net/packages/") t)

M-x package-install haskell-snippets

Add the following to your Emacs config:

(require 'haskell-snippets)

Snippets may have to be recompiled and reloaded in Emacs if YASnippet is already in use:

M-x yas-recompile-all M-x yas-reload-all

Haskell snippts should now be available to use! In a haskell-mode buffer, type fn<TAB>. A prompt should appear asking which fn snippet to expand.

I highly recommend using YASnippet with ido-mode. Configure Emacs:

(setq-default yas-prompt-functions '(yas-ido-prompt yas-dropdown-prompt))

This is important so that alternatives (like import vs. import qualified) can quickly be selected with a single key stroke.

Available Expansion Keys

  • new - newtype
  • mod - module [simple, exports]
  • main - main module and function
  • let - let bindings
  • lang - language extension pragmas
  • opt - GHC options pragmas
  • \ - lambda function
  • inst - instance declairation
  • imp - import modules [simple, qualified]
  • if - if conditional [inline, block]
  • <- - monadic get
  • fn - top level function [simple, guarded, clauses]
  • data - data type definition [inline, record]
  • => - type constraint
  • {- - block comment
  • case - case statement

Design Ideals

  • Keep snippet keys (the prefix used to auto-complete) to four characters or less while still being as easy to guess as possible.

  • Have as few keys as possible. The more keys there are to remember, the harder snippets are to use and learn.

  • Leverage ido-mode when reasonable. For instance, to keep the number of snippet keys to a minimum as well as auto complete things like Haskell Langauge Extension Pragmas. When multiple snippets share a key (ex: fn), the ido-mode prompts are unique to one character (ex: guarded function and simple function are g and s respectively).


This code is written and maintained by Luke Hoersten, luke@hoersten.org.