module Data.Universe.Instances.Read ( -- | A 'Read' instance for functions, given the input is 'Finite' and -- 'Ord' and both the input and output are 'Read'. ) where import Data.Map (fromList, (!)) import Data.Universe -- actually, the "Finite a" part of the context wouldn't be inferred if you -- asked GHC -- but it's kind of hopeless otherwise! instance (Finite a, Ord a, Read a, Read b) => Read (a -> b) where readsPrec n s = [((fromList v !), s') | (v, s') <- readsPrec n s]