{-# LANGUAGE DefaultSignatures, Safe #-}
module Dep.Class.Renderable (
CharRenderable(charRenderItem), Renderable(renderItem)
) where
import Data.Bool(bool)
import Data.Text(Text, singleton)
class CharRenderable a where
charRenderItem
:: a
-> Char
{-# MINIMAL charRenderItem #-}
class Renderable a where
renderItem
:: a
-> Text
default renderItem :: CharRenderable a => a -> Text
renderItem = Char -> Text
singleton (Char -> Text) -> (a -> Char) -> a -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> Char
forall a. CharRenderable a => a -> Char
charRenderItem
instance CharRenderable Bool where
charRenderItem :: Bool -> Char
charRenderItem = Char -> Char -> Bool -> Char
forall a. a -> a -> Bool -> a
bool Char
'0' Char
'1'
instance Renderable Bool
instance CharRenderable Char where
charRenderItem :: Char -> Char
charRenderItem = Char -> Char
forall a. a -> a
id
instance Renderable Char
instance CharRenderable a => CharRenderable (Maybe a) where
charRenderItem :: Maybe a -> Char
charRenderItem = Char -> (a -> Char) -> Maybe a -> Char
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Char
'-' a -> Char
forall a. CharRenderable a => a -> Char
charRenderItem
instance CharRenderable a => Renderable (Maybe a)