{-| Module : CheckBackend Description : Introduces a class synonym OKBackend for requirements of a backend Copyright : (c) Chris Reade, 2024 License : BSD-style Maintainer : chrisreade@mac.com Stability : experimental This module introduces a class synonym OKBackend to abbreviate requirements of a backend for drawing tilings. The instance declaration requires UndecidableInstances to be enabled. -} {-# LANGUAGE NoMonomorphismRestriction #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE TypeOperators #-} module CheckBackend ( OKBackend ) where import Diagrams.Prelude import Diagrams.TwoD.Text (Text) -- |Class OKBackend is a class synonym for suitable constraints on Backends for drawing tilings. class (V b ~ V2, N b ~ Double, Renderable (Path V2 Double) b, Renderable (Text Double) b) => OKBackend b where {} -- |Instance declaration for OKBackend requires UndecidableInstances to be enabled, -- but allows a suitable backend B to be recognised as an instance without explicitly writing -- instance OKBackend B -- Note B will be declared by user of this library and is not declared in the library instance (V b ~ V2, N b ~ Double, Renderable (Path V2 Double) b, Renderable (Text Double) b) => OKBackend b where {}