module Algebra.Affine where import Algebra (Group (..)) class Group (Diff a) => Affine a where type Diff a diff :: a -> a -> Diff a offset :: Diff a -> a -> a infix 6 .-. (.-.) :: Affine a => a -> a -> Diff a (.-.) = diff infixl 6 .+, .- (.+), (.-) :: Affine a => a -> Diff a -> a a .+ δ = offset δ a a .- δ = offset (invert δ) a