trait IsSchemeLattice[L] extends JoinLattice[L]
A lattice for Scheme should support the following operations
- Alphabetic
- By Inheritance
- IsSchemeLattice
- JoinLattice
- PartialOrdering
- Equiv
- Serializable
- Serializable
- Monoid
- Semigroup
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- All
Type Members
-
trait
MonoidLaw extends scalaz.Monoid.SemigroupLaw
- Definition Classes
- Monoid
- trait SchemeLatticeLaw extends MonoidLaw
-
trait
SemigroupLaw extends AnyRef
- Definition Classes
- Semigroup
-
trait
JoinLatticeLaw extends AnyRef
- Definition Classes
- JoinLattice
Abstract Value Members
-
abstract
def
binaryOp(op: BinaryOperator)(x: L, y: L): MayFail[L]
Performs a binary operation on abstract values x and y
-
abstract
def
bottom: L
A lattice has a bottom element
A lattice has a bottom element
- Definition Classes
- JoinLattice
-
abstract
def
car[Addr](x: L)(implicit arg0: Address[Addr]): Set[Addr]
Takes the car of a cons cell
-
abstract
def
cardinality(x: L): Cardinality
Cardinality of this value
Cardinality of this value
- Definition Classes
- JoinLattice
-
abstract
def
cdr[Addr](x: L)(implicit arg0: Address[Addr]): Set[Addr]
Takes the cdr of a cons cell
-
abstract
def
cons[Addr](car: Addr, cdr: Addr)(implicit arg0: Address[Addr]): L
Creates a cons cell
-
abstract
def
counting: Boolean
It should state whether it supports abstract counting or not.
It should state whether it supports abstract counting or not. (TODO: this is probably not the best place for that)
- Definition Classes
- JoinLattice
-
abstract
def
getClosures[Exp, Addr](x: L)(implicit arg0: Expression[Exp], arg1: Address[Addr]): Set[(Exp, Environment[Addr])]
Extract closures contained in this value
-
abstract
def
getPrimitives[Addr, Abs](x: L)(implicit arg0: Address[Addr], arg1: JoinLattice[Abs]): Set[Primitive[Addr, Abs]]
Extract primitives contained in this value
-
abstract
def
getVectors[Addr](x: L)(implicit arg0: Address[Addr]): Set[Addr]
Extract vector addresses contained in this value
-
abstract
def
inject[Exp, Addr](x: (Exp, Environment[Addr]))(implicit arg0: Expression[Exp], arg1: Address[Addr]): L
Injection of a closure
-
abstract
def
inject[Addr, Abs](x: Primitive[Addr, Abs])(implicit arg0: Address[Addr], arg1: JoinLattice[Abs]): L
Injection of a primitive function
-
abstract
def
inject(x: Char): L
Injection of a character
-
abstract
def
inject(x: Boolean): L
Injection of a boolean
-
abstract
def
inject(x: String): L
Injection of a string
-
abstract
def
inject(x: Double): L
Injection of a float
-
abstract
def
inject(x: Int): L
Injection of an integer
-
abstract
def
injectSymbol(x: String): L
Injection of a symbol
-
abstract
def
intTop: L
The top integer
-
abstract
def
isFalse(x: L): Boolean
Can this value be considered false for conditionals?
-
abstract
def
isPrimitiveValue(x: L): Boolean
Some elements may contain addresses in there and are therefore not considered as primitive values
Some elements may contain addresses in there and are therefore not considered as primitive values
- Definition Classes
- JoinLattice
-
abstract
def
isTrue(x: L): Boolean
Can this value be considered true for conditionals?
-
abstract
def
join(x: L, y: L): L
Elements of the lattice can be joined together
Elements of the lattice can be joined together
- Definition Classes
- JoinLattice
-
abstract
def
name: String
A name identifying the lattice
A name identifying the lattice
- Definition Classes
- JoinLattice
-
abstract
def
nil: L
Nil value
-
abstract
def
subsumes(x: L, y: L): Boolean
Subsumption between two elements can be checked
Subsumption between two elements can be checked
- Definition Classes
- JoinLattice
-
abstract
def
unaryOp(op: UnaryOperator)(x: L): MayFail[L]
Performs a unary operation on the abstract value x
-
abstract
def
vector[Addr](addr: Addr, size: L, init: Addr)(implicit arg0: Address[Addr]): MayFail[(L, L)]
Creates a vector of the given size, where the initial value lies at address.
Creates a vector of the given size, where the initial value lies at address. Return the vector address wrapped in a lattice value, as well as the vector value itsel
-
abstract
def
vectorRef[Addr](vector: L, index: L)(implicit arg0: Address[Addr]): MayFail[Set[Addr]]
Get a value from a vector.
Get a value from a vector. Returns the addresses where to look for the values
-
abstract
def
vectorSet[Addr](vector: L, index: L, addr: Addr)(implicit arg0: Address[Addr]): MayFail[(L, Set[Addr])]
Changes a value inside a vector.
Changes a value inside a vector. The address given is an address where the value can be stored if needed. Returns the vector value, as well as the addresses to update in the store. The value stored is not passed to vectorSet, but will be stored in the returned addresses.
Concrete Value Members
-
def
and(x: L, y: ⇒ L): L
Conjunction
-
def
append(x: L, y: ⇒ L): L
- Definition Classes
- JoinLattice → Semigroup
-
final
def
applicative: Applicative[[α]L]
- Definition Classes
- Monoid
-
final
def
apply: Apply[[α]L]
- Definition Classes
- Semigroup
-
def
boolTop: L
The top boolean
-
final
def
category: Category[[α, β]L]
- Definition Classes
- Monoid
-
final
def
compose: Compose[[α, β]L]
- Definition Classes
- Semigroup
-
def
equiv(x: L, y: L): Boolean
- Definition Classes
- PartialOrdering → Equiv
-
def
gt(x: L, y: L): Boolean
- Definition Classes
- PartialOrdering
-
def
gteq(x: L, y: L): Boolean
- Definition Classes
- PartialOrdering
-
final
def
ifEmpty[B](a: L)(t: ⇒ B)(f: ⇒ B)(implicit eq: Equal[L]): B
- Definition Classes
- Monoid
-
def
isMZero(a: L)(implicit eq: Equal[L]): Boolean
- Definition Classes
- Monoid
-
def
lt(x: L, y: L): Boolean
- Definition Classes
- PartialOrdering
-
def
lteq(x: L, y: L): Boolean
- Definition Classes
- JoinLattice → PartialOrdering
-
def
monoidLaw: MonoidLaw
- Definition Classes
- Monoid
-
val
monoidSyntax: MonoidSyntax[L]
- Definition Classes
- Monoid
-
def
multiply(value: L, n: Int): L
- Definition Classes
- Monoid
-
def
multiply1(value: L, n: Int): L
- Definition Classes
- Semigroup
-
final
def
onEmpty[A, B](a: L)(v: ⇒ B)(implicit eq: Equal[L], mb: Monoid[B]): B
- Definition Classes
- Monoid
-
final
def
onNotEmpty[B](a: L)(v: ⇒ B)(implicit eq: Equal[L], mb: Monoid[B]): B
- Definition Classes
- Monoid
-
def
or(x: L, y: ⇒ L): L
Disjunction
-
def
reverse: PartialOrdering[L]
- Definition Classes
- PartialOrdering
- val schemeLatticeLaw: SchemeLatticeLaw
-
def
semigroupLaw: SemigroupLaw
- Definition Classes
- Semigroup
-
val
semigroupSyntax: SemigroupSyntax[L]
- Definition Classes
- Semigroup
-
def
totalLessThan(a: L, b: L): Boolean
Force an artificial "total order" to sort final values and have a deterministic printing output.
Force an artificial "total order" to sort final values and have a deterministic printing output. (The corresponding relation <= is not always transitive, but it is good enough.)
- Definition Classes
- JoinLattice
-
def
tryCompare(x: L, y: L): Option[Int]
If x and y are comparable then returns the comparison, else returns None.
If x and y are comparable then returns the comparison, else returns None.
- Definition Classes
- JoinLattice → PartialOrdering
-
def
zero: L
- Definition Classes
- JoinLattice → Monoid