| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
Howl.Expr.Internal
Description
Core expression datatypes, conversions, and low-level helpers.
Synopsis
- data Literal
- = LitNumeric !Numeric
- | LitString !Text
- data Expr
- pattern (:@) :: Expr -> Seq Expr -> Expr
- pattern ExprView :: FromExpr a => a -> Expr
- pattern ExprNumeric :: Numeric -> Expr
- pattern ExprInteger :: Integer -> Expr
- pattern ExprRational :: Rational -> Expr
- pattern ExprDouble :: Double -> Expr
- pattern ExprBigFloat :: BigFloat -> Expr
- pattern ExprString :: Text -> Expr
- class FromExpr a where
- class ToExpr a where
- fullForm :: Expr -> String
- unary :: Expr -> Expr -> Expr
- binary :: Expr -> Expr -> Expr -> Expr
- mapSymbols :: (Symbol -> Expr) -> Expr -> Expr
- flattenWithHead :: Expr -> Seq Expr -> Seq Expr
- applyOneId :: Expr -> Expr -> Seq Expr -> Expr
- rootSymbol :: Expr -> Maybe Symbol
Documentation
A literal value.
Constructors
| LitNumeric !Numeric | A numeric literal. |
| LitString !Text | A string literal. |
A Wolfram Language expression.
Constructors
| ExprLit !Literal | A literal value such as a number or string. |
| ExprSymbol !Symbol | A symbol expression such as |
| ExprApp !Expr !(Seq Expr) | An application of a head expression to a sequence of arguments. For example:
|
pattern (:@) :: Expr -> Seq Expr -> Expr infixl 9 #
An infix version of ExprApp.
f :@ args is equivalent to ExprApp f args.
pattern ExprView :: FromExpr a => a -> Expr #
A general pattern synonym that matches any value with a
FromExpr instance.
pattern ExprNumeric :: Numeric -> Expr #
A pattern synonym for numeric expressions.
pattern ExprInteger :: Integer -> Expr #
A pattern synonym for integer expressions.
pattern ExprRational :: Rational -> Expr #
A pattern synonym for rational expressions.
pattern ExprDouble :: Double -> Expr #
A pattern synonym for double-precision floating-point expressions.
pattern ExprBigFloat :: BigFloat -> Expr #
A pattern synonym for arbitrary-precision floating-point expressions.
pattern ExprString :: Text -> Expr #
A pattern synonym for string expressions.
A class for types that can potentially be matched to expressions.
Instances
| FromExpr Rational # | |
| FromExpr LHS # | |
| FromExpr Expr # | |
| FromExpr BigFloat # | |
| FromExpr Numeric # | |
| FromExpr Symbol # | |
| FromExpr Text # | |
| FromExpr Integer # | |
| FromExpr () # | |
Defined in Howl.Expr.Syntax | |
| FromExpr Bool # | |
| FromExpr Double # | |
| FromExpr Int # | |
| FromExpr a => FromExpr (AList a) # | |
| FromExpr a => FromExpr (ListOrSolo a) # | |
Defined in Howl.Builtins.Types Methods fromExpr :: Expr -> Maybe (ListOrSolo a) # | |
| FromExpr a => FromExpr [a] # | |
Defined in Howl.Expr.Syntax | |
| (FromExpr a, FromExpr b) => FromExpr (a, b) # | |
Defined in Howl.Expr.Syntax | |
| (FromExpr a, FromExpr b, FromExpr c) => FromExpr (a, b, c) # | |
Defined in Howl.Expr.Syntax | |
| (FromExpr a, FromExpr b, FromExpr c, FromExpr d) => FromExpr (a, b, c, d) # | |
Defined in Howl.Expr.Syntax | |
A class for types that can be converted to expressions.
Instances
| ToExpr Rational # | Convert a Rational into an Expr, representing it as an ExprInteger if it is an integer. |
Defined in Howl.Expr.Internal | |
| ToExpr Expr # | |
Defined in Howl.Expr.Internal | |
| ToExpr BigFloat # | |
Defined in Howl.Expr.Internal | |
| ToExpr Numeric # | |
Defined in Howl.Expr.Internal | |
| ToExpr Symbol # | |
Defined in Howl.Expr.Internal | |
| ToExpr Text # | |
Defined in Howl.Expr.Internal | |
| ToExpr Integer # | |
Defined in Howl.Expr.Internal | |
| ToExpr () # | |
Defined in Howl.Expr.Syntax | |
| ToExpr Bool # | |
Defined in Howl.Expr.Syntax | |
| ToExpr Double # | |
Defined in Howl.Expr.Internal | |
| ToExpr Int # | |
Defined in Howl.Expr.Internal | |
| ToExpr a => ToExpr (AList a) # | |
Defined in Howl.Builtins.Types | |
| ToExpr a => ToExpr [a] # | |
Defined in Howl.Expr.Syntax | |
| (ToExpr a, ToExpr b) => ToExpr (a, b) # | |
Defined in Howl.Expr.Syntax | |
| (ToExpr a, ToExpr b, ToExpr c) => ToExpr (a, b, c) # | |
Defined in Howl.Expr.Syntax | |
| (ToExpr a, ToExpr b, ToExpr c, ToExpr d) => ToExpr (a, b, c, d) # | |
Defined in Howl.Expr.Syntax | |
mapSymbols :: (Symbol -> Expr) -> Expr -> Expr #
Map a function over the symbols present in an expression.
flattenWithHead :: Expr -> Seq Expr -> Seq Expr #
Flatten applications of h in the given list of expressions, working recursively until a different head is encountered. Example:
flattenWithHead A [A[x], A[A[y],B[A[z]]]] ---> [x,y,B[A[z]]]
applyOneId :: Expr -> Expr -> Seq Expr -> Expr #
Apply the OneIdentity rule with the given default element.
rootSymbol :: Expr -> Maybe Symbol #
Get the outermost symbol of an expression, if there is one.