Difference between revisions of "User:MathematicalOrchid"
Jump to navigation
Jump to search
m |
|||
Line 12: | Line 12: | ||
==== Active ==== |
==== Active ==== |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
==== On Hold ==== |
==== On Hold ==== |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
* Sorting algorithm benchmarks. |
* Sorting algorithm benchmarks. |
||
* Audio DSP in Haskell. |
* Audio DSP in Haskell. |
||
⚫ | |||
* [[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 30: | 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
Status
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.
Projects
Active
- 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.
Failed
- Haskell ray tracer.
- Haskell type deducer.
- Haskell program to cause world peace.
Darcs
Indoculate
darcs get http://www.orphi.me.uk/darcs/Indoculate
ghc --make MakeHTML
ghc --make MakeSite
ghc --make MakeLaTeX
Chaos pendulum simulator
darcs get http://www.orphi.me.uk/darcs/Chaos
(Chaos pendulum simulator.)
Toy Compression
darcs get http://www.orphi.me.uk/darcs/ToyCompression
ghc -O2 --make Encode
ghc -O2 --make Decode
Encode algorithm file
(Compressfile
using specified algorithm, and save asfile-algorithm
.)Decode algorithm file
(Decompressfile
using specified algorithm, and save asfile-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...
Contributed Code
- Library for binary
- Library for vectors
- Library for colours
- Library for PPM images
- Toy compression implementations
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 thanputStr (xs1 ++ xs2)
?