Hacker News Digest

12 сентября 2025 г. в 11:46 • jappie.me • ⭐ 104 • 💬 67

OriginalHN

#haskell#backpack#type-classes#functional-programming#modules

Death to type classes

Смерть классам типов!

Числа пасутся? Функторы поют? Нет — это ложь элит. Backpack вместо классов: сигнатуры модулей, а не class.

signature Functor (Functor, map) where
  data Functor a
  map :: (a→b) → Functor a → Functor b

Реализация для Maybe:

module Functor.Maybe where
type Functor = Maybe
map f (Just x) = Just (f x)
map _ Nothing  = Nothing

Cabal: сигнатуры в library, реализации в library impl. Подмена через mixins:

mixins: death (Functor.Sig as Functor.Maybe)

Можно много реализаций в одном проекте: List, Maybe, IO — всё живёт рядом, без {-# LANGUAGE RebindableSyntax #-} не обойтись.

Итог: вместо классов — модули, вместо инстансов — реализации. Композиция через Backpack, а не instance.