Personal tools

User:MathematicalOrchid

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
m
Line 12: Line 12:
 
==== Active ====
 
==== Active ====
   
* (no name) — chaos pendulum simulator (Status: moderately working, needs UI)
+
* Toy compression implementations in Haskell.
* ''Haktal'' — fractal generator. (Status: minimal functionality)
 
* ''HoJ'' — Haskell to Java compiler. (Status: skeletal)
 
* ''Evlor'' — Interactive Haskell step-line debugger. (Status: skeletal)
 
* ''Indoculate'' — Program to convert a single (custom) source to both HTML and LaTeX, and also do cross-linking. (Status: in production use)
 
   
 
==== On Hold ====
 
==== 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.
 
* Sorting algorithm benchmarks.
 
* Audio DSP in Haskell.
 
* Audio DSP in Haskell.
* [[Toy compression implementations|Haskell implementation of compression algorithms]].
 
 
* [[POV-Ray SDL project|Haskell SDL]] for [http://www.povray.org/ POV-Ray].
 
* [[POV-Ray SDL project|Haskell SDL]] for [http://www.povray.org/ POV-Ray].
   
Line 26: Line 30:
 
* Haskell type deducer.
 
* Haskell type deducer.
 
* Haskell program to cause world peace.
 
* Haskell program to cause world peace.
  +
  +
=== Darcs ===
  +
  +
==== Indoculate ====
  +
  +
* <code>darcs get http://www.orphi.me.uk/darcs/Indoculate</code>
  +
* <code>ghc --make MakeHTML</code>
  +
* <code>ghc --make MakeSite</code>
  +
* <code>ghc --make MakeLaTeX</code>
  +
  +
==== Chaos pendulum simulator ====
  +
  +
* <code>darcs get http://www.orphi.me.uk/darcs/Chaos</code> (Chaos pendulum simulator.)
  +
  +
==== Toy Compression ====
  +
  +
* <code>darcs get http://www.orphi.me.uk/darcs/ToyCompression</code>
  +
* <code>ghc -O2 --make Encode</code>
  +
* <code>ghc -O2 --make Decode</code>
  +
* <code>Encode algorithm file</code> (Compress <code>file</code> using specified algorithm, and save as <code>file-algorithm</code>.)
  +
* <code>Decode algorithm file</code> (Decompress <code>file</code> using specified algorithm, and save as <code>file-unalgorithm</code>.)
  +
  +
Currently working algorithms:
  +
* '<code>RLE</code>': ''Run-length encoding''. Works well on files containing lots of 'runs' of the same value - e.g., pixel data. Works horribly on text.
  +
* '<code>BWT</code>': ''Burrows-Wheeler transform''. Doesn't actually do any compression, but tends to make data more compressible.
  +
* '<code>MTF</code>': ''Move-to-front encoding''. Again, doesn't compress, but makes the data more compressible.
  +
* '<code>Fib</code>': ''Fibonacci codes''. Low numbers take up fewer bits than large numbers.
  +
* '<code>LZW</code>':'' Lempel-Ziv-Welch''. Works well on just about everything!
  +
  +
Notes:
  +
* 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 ===
 
=== Contributed Code ===

Revision as of 12:31, 9 July 2007

Contents

1 Status

Enthusiastic Haskell newbie.

2 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.

3 Projects

3.1 Active

  • Toy compression implementations in Haskell.

3.2 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.

3.3 Failed

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

4 Darcs

4.1 Indoculate

4.2 Chaos pendulum simulator

4.3 Toy Compression

  • darcs get http://www.orphi.me.uk/darcs/ToyCompression
  • 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!

Notes:

  • 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...

5 Contributed Code

6 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)
    ?