packages feed

algebraic-0.1.0.0: src/Math/Metric/Discrete.hs

{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleInstances #-}

module Math.Metric.Discrete where

import Math.Metric.Metric        (Metric(..), MetricCoord(..))
import Math.Coordinate.Cartesian (Cartesian(..), Point2(..))


data Discrete = Discrete deriving Show


--------------------------------------------------------------------------------
-- Instances
--------------------------------------------------------------------------------

instance MetricCoord Discrete Cartesian where
    metricCoord _ = Cartesian

instance (Num a, Eq a) => Metric Discrete (Point2 a) a where
    distanceBase _ p1 p2 = if p1 == p2 then 0 else 1