私は次の定義を持っています
{-# LANGUAGE MultiParamTypeClasses,
FunctionalDependencies,
FlexibleInstances,
FlexibleContexts #-}
import qualified Data.Map as M
class Graph g n e | g -> n e where
empty :: g -- returns an empty graph
type Matrix a = [[a]]
data MxGraph a b = MxGraph { nodeMap :: M.Map a Int, edgeMatrix :: Matrix (Maybe b) } deriving Show
instance (Ord n) => Graph (MxGraph n e) n e where
empty = MxGraph M.empty [[]]
empty を呼び出そうとすると、あいまいな型のエラーが発生します
*Main> empty
Ambiguous type variables `g0', `n0', `e0' in the constraint: ...
なぜこのエラーが発生するのですか? どうすれば修正できますか?