casa-abbreviations-and-acronyms-0.0.2: src/library/Data/Aviation/Casa/AbbreviationsAndAcronyms/Render/Score.hs
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE TypeSynonymInstances #-}
{-# LANGUAGE FlexibleInstances #-}
module Data.Aviation.Casa.AbbreviationsAndAcronyms.Render.Score(
HasScore(..)
, HasShowScore(..)
) where
import Control.Category(id)
import Control.Lens(Lens', Getter, to)
import Data.Functor(fmap)
import Data.Int(Int)
import Data.Monoid.Textual(TextualMonoid)
import Data.String(String)
import Prelude(show)
import Text.Fuzzy(Fuzzy(Fuzzy))
class HasScore a where
score ::
Lens'
a
Int
instance HasScore Int where
score =
id
instance TextualMonoid s => HasScore (Fuzzy a s) where
score f (Fuzzy x o s) =
fmap (\t -> Fuzzy x o t) (f s)
class HasShowScore a where
showScore ::
Getter
a
String
instance HasShowScore String where
showScore =
id
instance HasShowScore Int where
showScore =
to show
instance TextualMonoid s => HasShowScore (Fuzzy a s) where
showScore =
to (\(Fuzzy _ _ s) -> show s)