abstract class Strategy extends (Any) ⇒ Option[Any]
Any-rewriting strategies. A strategy is a function that takes a term
of any type as input and either succeeds producing a new term (Some),
or fails (None). name is used to identify this strategy in debugging
output.
- Self Type
- Strategy
- Source
- Strategy.scala
- Alphabetic
- By Inheritance
- Strategy
- Function1
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
- new Strategy(name: String)
Abstract Value Members
-
abstract
val
body: (Any) ⇒ Option[Any]
Implementation of this strategy.
Implementation of this strategy. When applied to a term produce either a transformed term wrapped in
Some, orNone, representing a rewriting failure.
Concrete Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
def
+(name: String, q: ⇒ Strategy): PlusStrategy
As for the other
+with the first argument specifying a name for the constructed strategy. -
macro
def
+(q: Strategy): PlusStrategy
Non-deterministic choice.
Non-deterministic choice. Normally, construct a strategy that first applies either this strategy or the given strategy. If it succeeds, succeed with the resulting term. Otherwise, apply
q. Currently implemented as deterministic choice, but this behaviour should not be relied upon. When used as the argument to the<conditional choice combinator,+just serves to hold the two strategies that are chosen between by the conditional choice.qis evaluated at most once. -
def
<(name: String, lr: ⇒ PlusStrategy): Strategy
As for the other
<with the first argument specifying a name for the constructed strategy. -
macro
def
<(lr: PlusStrategy): Strategy
Conditional choice:
c < l + r.Conditional choice:
c < l + r. Construct a strategy that first applies this strategy (c). Ifcsucceeds, the strategy applieslto the resulting term, otherwise it appliesrto the original subject term.lris evaluated at most once. -
def
<*(name: String, q: ⇒ Strategy): Strategy
As for the other
<*with the first argument specifying a name for the constructed strategy. -
macro
def
<*(q: Strategy): Strategy
Sequential composition.
Sequential composition. Construct a strategy that first applies this strategy. If it succeeds, then apply
qto the new subject term. Otherwise fail.qis evaluated at most once. -
def
<+(name: String, q: ⇒ Strategy): Strategy
As for the other
<+with the first argument specifying a name for the constructed strategy. -
macro
def
<+(q: Strategy): Strategy
Deterministic choice.
Deterministic choice. Construct a strategy that first applies this strategy. If it succeeds, succeed with the resulting term. Otherwise, apply
qto the original subject term.qis evaluated at most once. -
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
andThen[A](g: (Option[Any]) ⇒ A): (Any) ⇒ A
- Definition Classes
- Function1
- Annotations
- @unspecialized()
-
def
apply(r: Any): Option[Any]
Apply this strategy to a term.
Apply this strategy to a term. By default, just run the implementation body wrapped in profiling.
- Definition Classes
- Strategy → Function1
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
def
compose[A](g: (A) ⇒ Any): (A) ⇒ Option[Any]
- Definition Classes
- Function1
- Annotations
- @unspecialized()
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
mkStrategy(name: String, f: (Any) ⇒ Option[Any]): Strategy
Make one of these strategies with the given name and body
f. - val name: String
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
Identify this strategy by its name.
Identify this strategy by its name.
- Definition Classes
- Strategy → Function1 → AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )