dumb-cas-0.1.1.0: CAS/Dumb/Symbols/ASCII/Qualified.hs
-- |
-- Module : CAS.Dumb.Symbols.ASCII.Qualified
-- Copyright : (c) Justus Sagemüller 2017
-- License : GPL v3
--
-- Maintainer : (@) jsagemue $ uni-koeln.de
-- Stability : experimental
-- Portability : portable
--
-- Single-letter variable symbols.
--
-- Defining such variables on the top level, while convenient for brevity, is a bit
-- troublesome because such are often used as local variables in Haskell code. It is
-- recommended to use "CAS.Dumb.Symbols.Unicode.MathLatin_RomanGreek__BopomofoGaps"
-- instead of this module.
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE UnicodeSyntax #-}
module CAS.Dumb.Symbols.ASCII.Qualified (
module CAS.Dumb.Symbols
, Symbol, Expression, Pattern
-- * “Constant variable” symbols
-- ** Lowercase letters
,syma,symb,symc,symd,syme,symf,symg,symh,symi,symj,symk,syml,symm,symn,symo,symp,symq,symr,syms,symt,symu,symv,symw,symx,symy,symz
-- ** Uppercase letters
-- $uppercaseCaveat
,symA,symB,symC,symD,symE,symF,symG,symH,symI,symJ,symK,symL,symM,symN,symO,symP,symQ,symR,symS,symT,symU,symV,symW,symX,symY,symZ
-- * Auxiliary
, Expression'
) where
import CAS.Dumb.Tree
import CAS.Dumb.Symbols
import CAS.Dumb.Symbols.PatternGenerator
import CAS.Dumb.Symbols.ASCII
(Symbol, Expression', Expression, Pattern)
import Data.Void
import Data.Monoid
import Control.Arrow
makeQualifiedSymbols ''Expression' "sym" ['a'..'z']
-- $uppercaseCaveat
-- These are only available in GHC>8.2. The ability to use uppercase letters as variables
-- hinges on a hack using GHC's still recent
-- <https://ghc.haskell.org/trac/ghc/wiki/PatternSynonyms pattern synonyms> feature.
makeQualifiedSymbols ''Expression' "sym" ['A'..'Z']