{-# LANGUAGE CPP #-}
{-# LANGUAGE NoImplicitPrelude #-}

--------------------------------------------------

{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE PackageImports #-}

--------------------------------------------------

{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE DeriveGeneric #-}

--------------------------------------------------
--------------------------------------------------

{-| Simple string-based printers.

NOTE “Printing” here means rendering \/ displaying \/ showing
(not @stdout@ or @putStrLn@, necessarily).

-}

module Prelude.Spiros.Print

  ( SimplePrint

  ) where

--------------------------------------------------
--------------------------------------------------

import Prelude.Spiros.Types
import Prelude.Spiros.Classes
import Prelude.Spiros.Reexports

import Prelude.Spiros.Utilities
import qualified Prelude.Spiros.GUI as GUI

-- import qualified Prelude.Spiros.Base as Base
-- import           Prelude.Spiros.Base (String)

--------------------------------------------------
--------------------------------------------------

import "exceptions" Control.Monad.Catch (MonadThrow(..))

--------------------------------------------------

import qualified "containers" Data.Map as Map

--------------------------------------------------
------------------------------------------------

import           "base" Control.Exception (Exception(..))

import qualified "base" Prelude

--------------------------------------------------
-- Types -----------------------------------------
--------------------------------------------------

{-| Simple printer.

a Type Alias for showing strings:

@
show :: (Show a) => 'SimplePrint' a
@

Usage:

@
-- an example printer:

printVerbosity :: 'SimpleParse' Verbosity
printVerbosity = \case

  Concise -> \"concise\"
  Verbose -> \"verbose\"

-- for this type:

data Verbosity = Concise | Verbose
@

-}

type SimplePrint a =

  (a -> String)

--------------------------------------------------
-- Definitions -----------------------------------
--------------------------------------------------



--------------------------------------------------
--------------------------------------------------