http://www.haskell.org/haskellwiki/Memoization
Показывает это:
Map () b := b
Map (Either a a') b := (Map a b, Map a' b)
Map (a,a') b := Map a (Map a' b)
Без сомнения, что-то простое, но я не распознаю синтаксис, и ни Google, ни я не знаем, что делает оператор ": =". :-)
Выглядит как перегруженное определение конструктора, возможно, для класса Assoc?
Старая книга (Дэвис) по Haskell показывает это в модуле PreludeArray, но я больше этого не нахожу.