| Copyright | (c) Sirui Lu 2021-2023 |
|---|---|
| License | BSD-3-Clause (see the LICENSE file) |
| Maintainer | siruilu@cs.washington.edu |
| Stability | Experimental |
| Portability | GHC only |
| Safe Haskell | Trustworthy |
| Language | Haskell2010 |
Grisette.Core.Data.Class.Function
Contents
Description
Function operations
class Function f where Source #
Abstraction for function-like types.
Methods
(#) :: f -> Arg f -> Ret f infixl 9 Source #
Function application operator.
The operator is not right associated (like ($)). It is left associated,
and you can provide many arguments with this operator once at a time.
>>>(+1) # 23
>>>(+) # 2 # 35
Instances
| (Function f, Mergeable f, Mergeable a, Ret f ~ a) => Function (UnionM f) Source # | |
| (LinkedRep a sa, LinkedRep b sb) => Function (a --> b) Source # | |
| (SupportedPrim ca, SupportedPrim cb, LinkedRep ca sa, LinkedRep cb sb) => Function (sa -~> sb) Source # | |
| (SupportedPrim ca, SupportedPrim cb, LinkedRep ca sa, LinkedRep cb sb) => Function (sa =~> sb) Source # | |
| Eq a => Function (a =-> b) Source # | |
| Function (a -> b) Source # | |
Applying an uninterpreted function.
>>>let f = "f" :: SymInteger =~> SymInteger =~> SymInteger>>>apply f "a" "b"(apply (apply f a) b)
Note that for implementation reasons, you can also use apply function on
a non-function symbolic value. In this case, the function is treated as an
id function.
Instances
| Apply SymBool Source # | |
| Apply SymInteger Source # | |
Defined in Grisette.IR.SymPrim.Data.SymPrim Associated Types type FunType SymInteger Source # Methods apply :: SymInteger -> FunType SymInteger Source # | |
| (KnownNat n, 1 <= n) => Apply (SymIntN n) Source # | |
| (KnownNat n, 1 <= n) => Apply (SymWordN n) Source # | |
| (LinkedRep ca sa, LinkedRep ct st, Apply st) => Apply (sa -~> st) Source # | |
| (LinkedRep ca sa, LinkedRep ct st, Apply st) => Apply (sa =~> st) Source # | |
| Apply b => Apply (a -> b) Source # | |