=> IsVarName str
-}
type family IsVarName str
-type instance IsVarName str = ( (HLength str :<=: D19)
+type instance IsVarName str = ( (HLength str :>: D0)
+ :&&:
+ (HLength str :<=: D19)
:&&:
(HAll IsGoodLetterForVarNameA str)
)
type family IsGoodLetterForVarName c
type instance IsGoodLetterForVarName c = ( ((c :>=: D65) :&&: (c :<=: D90)) -- A-Z
:||:
- ((c :>=: D99) :&&: (c :<=: D122)) -- a-z
+ ((c :>=: D97) :&&: (c :<=: D122)) -- a-z
:||:
(c :==: D45) -- '-'
:||:
type Apply IsGoodLetterForVarNameA c = IsGoodLetterForVarName c
-- Variable
-data Variable vn
- = Variable !vn
- deriving (Show, Eq, Ord)
+data Variable vn = Var !vn
+ deriving (Show, Eq, Ord)
type instance IsExpr (Variable vn) = True
type instance IsCommonExpr (Variable vn) = True