-- | -- 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 -- feature. makeQualifiedSymbols ''Expression' "sym" ['A'..'Z']