У Вас тут АлгТД с двумя конструкторами, а конструкторы по сути -- функции.

Кстати, Зефиров (thesz) писал, что в его эмуляторе процессора он использовал самодельный тип данных (вроде вашего) вместо стандартного списка -- получилось заметно шустрее. Там получалось выполнение цепочки функций вместо прохода по списку, что-то в этом духе...

Кстати, такие ответы лучше искать нахаскельвики
http://haskell.org/haskellwiki/Performance/Data_types