From HaskellWiki
Jump to: navigation, search


Enthusiastic Haskell newbie.

Main Interests

  • Using Haskell to write triposcopic mathematical algorithms with only a tiny amount of code.
  • Using Haskell to do seriously compute-bounded work in a multiprocessor setup.



  • Toy compression implementations in Haskell.

On Hold

  • Indoculate — Program to convert a single (custom) source to both HTML and LaTeX, and also do cross-linking. (Status: in production use)
  • Chaos — chaos pendulum simulator (Status: moderately working, needs UI)
  • Haktal — fractal generator. (Status: minimal functionality)
  • HoJ — Haskell to Java compiler. (Status: skeletal)
  • Evlor — Interactive Haskell step-line debugger. (Status: skeletal)
  • Sorting algorithm benchmarks.
  • Audio DSP in Haskell.
  • Haskell SDL for POV-Ray.


  • Haskell ray tracer.
  • Haskell type deducer.
  • Haskell program to cause world peace.



Chaos pendulum simulator

Toy Compression

  • darcs get
  • ghc -O2 --make Encode
  • ghc -O2 --make Decode
  • Encode algorithm file (Compress file using specified algorithm, and save as file-algorithm.)
  • Decode algorithm file (Decompress file using specified algorithm, and save as file-unalgorithm.)

Currently working algorithms:

  • 'RLE': Run-length encoding. Works well on files containing lots of 'runs' of the same value - e.g., pixel data. Works horribly on text.
  • 'BWT': Burrows-Wheeler transform. Doesn't actually do any compression, but tends to make data more compressible.
  • 'MTF': Move-to-front encoding. Again, doesn't compress, but makes the data more compressible.
  • 'Fib': Fibonacci codes. Low numbers take up fewer bits than large numbers.
  • 'LZW': Lempel-Ziv-Welch. Works well on just about everything!


  • Danger: BWT is extremely slow. It also uses absurd amounts of RAM! Run this algorithm only on small files. (Less than about 10 KB.)
  • LZW works very well, but BWT+MTF+Fib is currently unbeaten...

Contributed Code

Current Unsolved Questions

  • Why do Haskell language extensions exist?
  • How do you do graphics in Haskell?
  • How come (e.g.) Smalltalk provides 27 different types of collection, but Haskell only ever involves single-linked lists and binary trees?
  • Why is putStr xs1; putStr xs2 slower than putStr (xs1 ++ xs2)?