dumb-cas 0.2.1.0 → 0.2.1.1
raw patch · 3 files changed
+38/−14 lines, 3 filesdep ~basedep ~hashable
Dependency ranges changed: base, hashable
Files
- CAS/Dumb/Symbols/PatternGenerator.hs +18/−3
- CAS/Dumb/Symbols/Unicode/MathLatin_RomanGreek__BopomofoGaps.hs +18/−9
- dumb-cas.cabal +2/−2
CAS/Dumb/Symbols/PatternGenerator.hs view
@@ -13,7 +13,7 @@ {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE CPP #-} -module CAS.Dumb.Symbols.PatternGenerator where+module CAS.Dumb.Symbols.PatternGenerator (makeSymbols, makeQualifiedSymbols) where import CAS.Dumb.Tree import CAS.Dumb.Symbols@@ -27,6 +27,21 @@ -> DecsQ makeSymbols t = makeQualifiedSymbols t "" +plainTVinf :: Name -> TyVarBndr+#if MIN_VERSION_template_haskell(2,17,0)+ Specificity+plainTVinf n = PlainTV n inferredSpec+#else+plainTVinf = PlainTV+#endif++conPnoTA :: Name -> [Pat] -> Pat+#if MIN_VERSION_template_haskell(2,18,0)+conPnoTA n pats = ConP n [] pats+#else+conPnoTA = ConP+#endif+ makeQualifiedSymbols :: Name -- ^ Desired type of the symbols. -> String -- ^ Prefix for the generated Haskell names.@@ -35,7 +50,7 @@ makeQualifiedSymbols casType namePrefix = fmap concat . mapM mkSymbol where mkSymbol c | isLower (head idfyer) = return- [ SigD symbName $ ForallT [PlainTV γ, PlainTV s¹, PlainTV s², PlainTV ζ] [] typeName+ [ SigD symbName $ ForallT [plainTVinf γ, plainTVinf s¹, plainTVinf s², plainTVinf ζ] [] typeName -- c :: casType γ s² s¹ ζ , ValD (VarP symbName) (NormalB . AppE (ConE 'Symbol)@@ -51,7 +66,7 @@ , PatSynD symbName (PrefixPatSyn []) ImplBidir- ('Symbol `ConP` ['PrimitiveSymbol `ConP` [LitP $ CharL c]])+ ('Symbol `conPnoTA` ['PrimitiveSymbol `conPnoTA` [LitP $ CharL c]]) -- pattern c = Symbol (StringSymbol ['c']) ] #endif
CAS/Dumb/Symbols/Unicode/MathLatin_RomanGreek__BopomofoGaps.hs view
@@ -32,6 +32,8 @@ , 𝑎,𝑏,𝑐,𝑑,𝑒,𝑓,𝑔,ℎ,𝑖,𝑗,𝑘,𝑙,𝑚,𝑛,𝑜,𝑝,𝑞,𝑟,𝑠,𝑡,𝑢,𝑣,𝑤,𝑥,𝑦,𝑧 -- *** Bold , 𝐚,𝐛,𝐜,𝐝,𝐞,𝐟,𝐠,𝐡,𝐢,𝐣,𝐤,𝐥,𝐦,𝐧,𝐨,𝐩,𝐪,𝐫,𝐬,𝐭,𝐮,𝐯,𝐰,𝐱,𝐲,𝐳+ -- *** Fraktur+ , 𝔞,𝔟,𝔠,𝔡,𝔢,𝔣,𝔤,𝔥,𝔦,𝔧,𝔨,𝔩,𝔪,𝔫,𝔬,𝔭,𝔮,𝔯,𝔰,𝔱,𝔲,𝔳,𝔴,𝔵,𝔶,𝔷 -- *** Greek , α,β,γ,δ,ε,ζ,η,θ,ϑ,ι,κ,λ,μ,ν,ξ,ο,π,ρ,ϱ,σ,ς,τ,υ,ϕ,φ,χ,ψ,ω -- ** Uppercase letters@@ -81,18 +83,24 @@ instance Unwieldy c => Unwieldy (Symbol c) where unwieldiness (NatSymbol i) = 0.24127 + fromInteger (abs i) unwieldiness (PrimitiveSymbol c)- | c>='a' && c<='z' = 1.17236 + fromIntegral (fromEnum 'z' - ucp)/49.4530- | c>='𝑎' && c<='𝑧' = 1.17249 + fromIntegral (fromEnum '𝑧' - ucp)/49.4564+ | c>='a' && c<='z' = 1.17236 + fromIntegral (fromEnum 'z' - ucp )/49.4530+ | c>='𝑎' && c<='𝑧' = 1.17249 + fromIntegral (fromEnum '𝑧' - ucp )/49.4564 | c=='ℎ' = 1.17249 + fromIntegral (fromEnum 'z' - fromEnum 'h')/49.4564- | c>='A' && c<='Z' = 1.17211 + fromIntegral (fromEnum 'Z' - ucp)/49.4571- | c>='𝐴' && c<='𝑍' = 1.17213 + fromIntegral (fromEnum '𝑍' - ucp)/49.4511- | c>='𝐚' && c<='𝐳' = 1.17228 + fromIntegral (fromEnum '𝐳' - ucp)/49.4572- | c>='𝐀' && c<='𝐙' = 1.17210 + fromIntegral (fromEnum '𝐙' - ucp)/49.4518- | c>='𝓐' && c<='𝓩' = 1.17212 + fromIntegral (fromEnum '𝓩' - ucp)/49.4528- | c>='α' && c<='ω' = 1.03627 + fromIntegral (fromEnum 'ω' - ucp)/342.637+ | c>='A' && c<='Z' = 1.17211 + fromIntegral (fromEnum 'Z' - ucp )/49.4571+ | c>='𝐴' && c<='𝑍' = 1.17213 + fromIntegral (fromEnum '𝑍' - ucp )/49.4511+ | c>='𝐚' && c<='𝐳' = 1.17228 + fromIntegral (fromEnum '𝐳' - ucp )/49.4572+ | c>='𝔄' && c<='ℨ' = 1.18131 + fromIntegral (fromEnum 'ℨ' - ucp )/51.4522+ | c=='ℭ' = 1.18131 + fromIntegral (fromEnum 'Z' - fromEnum 'C')/51.4522+ | c=='ℌ' = 1.18131 + fromIntegral (fromEnum 'Z' - fromEnum 'H')/51.4522+ | c=='ℑ' = 1.18131 + fromIntegral (fromEnum 'Z' - fromEnum 'I')/51.4522+ | c=='ℜ' = 1.18131 + fromIntegral (fromEnum 'Z' - fromEnum 'R')/51.4522+ | c>='𝔞' && c<='𝔷' = 1.18134 + fromIntegral (fromEnum '𝔷' - ucp )/51.4522+ | c>='𝐀' && c<='𝐙' = 1.17210 + fromIntegral (fromEnum '𝐙' - ucp )/49.4518+ | c>='𝓐' && c<='𝓩' = 1.17212 + fromIntegral (fromEnum '𝓩' - ucp )/49.4528+ | c>='α' && c<='ω' = 1.03627 + fromIntegral (fromEnum 'ω' - ucp )/342.637 | c=='ϑ' = 1.03628 + fromIntegral (fromEnum 'ω' - fromEnum 'θ')/342.637 | c=='ϕ' = 1.03628 + fromIntegral (fromEnum 'ω' - fromEnum 'φ')/342.637- | c>='Α' && c<='Ω' = 1.03625 + fromIntegral (fromEnum 'Ω' - ucp)/342.642+ | c>='Α' && c<='Ω' = 1.03625 + fromIntegral (fromEnum 'Ω' - ucp )/342.642 | otherwise = 1.24551 + fromIntegral ucp / 52792.42 + fromIntegral (ucp`mod`136)/9722.3 where ucp = fromEnum c@@ -113,6 +121,7 @@ makeSymbols ''Expression' "αβγδεζηθϑικλμνξοπρϱσςτυϕφχψω" +makeSymbols ''Expression' "𝔞𝔟𝔠𝔡𝔢𝔣𝔤𝔥𝔦𝔧𝔨𝔩𝔪𝔫𝔬𝔭𝔮𝔯𝔰𝔱𝔲𝔳𝔴𝔵𝔶𝔷" -- $uppercaseCaveat -- These are only available in GHC>8.2. The ability to use uppercase letters as variables
dumb-cas.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: dumb-cas-version: 0.2.1.0+version: 0.2.1.1 synopsis: A computer “algebra” system that knows nothing about algebra, at the core. description: This is a framework for untyped, symbolic computations like a CAS does, without any baked-in rules whatsoever but the ability to@@ -32,7 +32,7 @@ other-modules: CAS.Dumb.Util.These CAS.Dumb.Symbols.PatternGenerator other-extensions: DeriveFunctor- build-depends: base >=4.8 && <4.14, hashable >=1.2 && <1.4+ build-depends: base >=4.8 && <4.18, hashable >=1.2 && <1.5 , containers , unordered-containers >=0.2 && <0.3 , decimal-literals >= 0.1 && < 0.2