Haskell Programs
These are some programs that I've written in the Haskell programming language.
More information about haskell can be found here:
www.haskell.org
Crypto
- blowfish.hs: A Haskell module implementing Bruce Schneier's Blowfish encryption algorithm. This implementation uses 16 round blowfish. This code has been incorporated into the official haskell crypto library (Codec.Encryption.Blowfish), which is available here. Also mentioned on Bruce Schneier's site here.
- isaac.hs: A Haskell module implementing Robert Jenkins' ISAAC stream cipher, complete with full 2-pass key schedule. Mentioned and mirrored on Robert Jenkins' site here.
- crc32.hs: A Haskell implementation of the 32-bit Cyclic Redundancy Check. This is basically a clone of the unix cksum utility.
Part of this code is used in the MissingH Library
- tea.hs: A Haskell module implementing the 32-round "new variant" Tiny Encryption Algorithm block cipher invented by David Wheeler and Roger Needham.
- rc4.hs: A Haskell module implementing the RC4 stream cipher algorithm.
Other
- scierr.hs: A haskell module that implements a datatype that allows you to specify and deal with scientific uncertainties. It extends various type classes so you can use familiar arithmetic operators.
Artifical Intelligence
- ttt.tgz: A haskell program that uses alpha beta search (I know, overkill) to play a perfect game of Tic-Tac-Toe. Also comes with a comfortable text based UI for playing the game. Makefile is set up for GHC, but it will work with hugs as well.
- domino.tgz: A 2-player jamaican domino playing program. Plays a fairly decent game of dominoes, but the static evaluation function could still use some work. Uses n-ply alpha beta search.