Existem dois tipos diferentes de ferramentas matemáticas que os programadores de computador podem usar para ajudar a construir seus programas: os auxiliares e os funcionários representáveis. Os auxiliares, também conhecidos como 'adjunctions', são como peças de quebra-cabeça que os programadores podem encaixar juntos para construir programas mais complexos. Já os funcionários representáveis, são como peças de lego que os programadores podem usar para construir coisas diferentes. No Haskell, esses tipos de ferramentas matemáticas são muito úteis para construir programas mais avançados. 