nutcracker

package nutcracker

Type members

Classlikes

sealed trait Alternator
Companion:
object
object Alternator
Companion:
class
sealed trait Assessment[+U]
Type parameters:
U

description of unresolved things

Companion:
object
object Assessment
Companion:
class
final case class Assignment[L <: HList] extends AnyVal
Companion:
object
object Assignment
Companion:
class
Companion:
object
Companion:
class
abstract class Constraint[L <: HList, K[_]](val rel: Rel[L])
trait CostApi[M[_]]
Companion:
object
object CostApi
Companion:
class
trait Defer[M[_], D]
trait Dom[D] extends IDom[[i] =>> D]
Companion:
object
object Dom
Companion:
class
trait DomWithBottom[D] extends Dom[D]
Companion:
object
Companion:
class
trait Final[D]

Typeclass for domains that have (some) "final" elements, i.e. elements that cannot be refined further without reaching a contradiction. In other words, typeclass for domains that have elements covered by top.

Typeclass for domains that have (some) "final" elements, i.e. elements that cannot be refined further without reaching a contradiction. In other words, typeclass for domains that have elements covered by top.

Companion:
object
object Final
Companion:
class
trait IDom[D[_]]
Companion:
object
object IDom
Companion:
class
sealed abstract class IUpdateResult[D[_], Δ[_, _], I, J]
Companion:
object
Companion:
class
trait JoinDom[D] extends SyncDom[D]

Typeclass for domains that are join-semilattices.

Typeclass for domains that are join-semilattices.

Companion:
object
object JoinDom
Companion:
class
trait Observe[M[_]] extends Observers[M]

If we are allowed effects M, then Val[A] can be observed for changes to a (mutable) value of type A (for any A).

If we are allowed effects M, then Val[A] can be observed for changes to a (mutable) value of type A (for any A).

trait Observers[M[_]]
trait OnDemandPropagation[M[_]] extends Propagation[M]
Companion:
object
Companion:
class
case class OrientedPattern[V <: HList, L <: HList]
Companion:
object
Companion:
class
case class PartiallyAssignedOrientedPattern[V <: HList, L <: HList](pattern: OrientedPattern[V, L], assignment: Assignment[V])
case class PartiallyAssignedPattern[V <: HList](pattern: Pattern[V], assignment: Assignment[V])
sealed trait Pattern[V <: HList]
Companion:
object
object Pattern
Companion:
class
trait Propagation[M[_]] extends Observe[M]
Companion:
object
Companion:
class
trait RDom[D] extends SyncDom[D]

A domain whose deltas can be turned back into updates.

A domain whose deltas can be turned back into updates.

Companion:
object
object RDom
Companion:
class
abstract class Recipe[L <: HList, C <: HList, M[_]](val choose: Choose[L, C])
trait Rel[L <: HList]

N-ary relation (where N is determined by L). Loosely speaking, it represents the signature of a database table, i.e. the datatypes of the columns.

N-ary relation (where N is determined by L). Loosely speaking, it represents the signature of a database table, i.e. the datatypes of the columns.

An implementation MyRel[A, B] extends Rel[F[A, B]] must ensure that

  • if (rel1: MyRel[T, U]) == (rel2: MyRel[V, W]), i.e. two values of MyRel with different types are equal, then
    • for all row1: F[T, U], row2: F[V, W]
      • row1 == row2F[T, U] =:= F[V, W]

In other words, the table signature can be somewhat parametric, as long as the actual row values cannot be mistakenly thought to be of a different type.

Moreover, queries have to specify values of enough columns, so that the types of the remaining columns are uniquely determined by the types of the given columns.

Type parameters:
L

constituents of this relation.

Companion:
object
object Rel
Companion:
class
final case class RelChoice[V <: HList, L <: HList](rel: Rel[L], choose: Choose[V, L])
trait RelObservable[F[_], A, Δ]
Companion:
object
Companion:
class
trait RelObserve[F[_], G[_]]

Relative Observe: whenever ObserveVal[M, F] for some effect M[_], then also ObserveVal[M, G], for the same effect M.

Relative Observe: whenever ObserveVal[M, F] for some effect M[_], then also ObserveVal[M, G], for the same effect M.

trait Relations[M[_]]
Companion:
object
object Relations
Companion:
class

Typeclass for domains that are relatively complemented lattices.

Typeclass for domains that are relatively complemented lattices.

Companion:
object
trait Splittable[D] extends Dom[D]
Companion:
object
object Splittable
Companion:
class
Companion:
object
trait SplittableJoinDom[D] extends JoinDom[D] with Splittable[D]
Companion:
object
Companion:
class
final class Subscription[K[_]] extends AnyVal
Companion:
object
Companion:
class
trait SyncDom[D] extends Dom[D]
trait TerminalDom[D] extends Dom[D]

Domain whose values can be artificially caused to fail.

Domain whose values can be artificially caused to fail.

sealed trait TriggerF[F[_], D, Δ, A]
Companion:
object
object TriggerF
Companion:
class
case class Unchanged[D[_], Δ[_, _], I]() extends IUpdateResult[D, Δ, I, I]
case class Updated[D[_], Δ[_, _], I, J](newValue: D[J], delta: Δ[I, J]) extends IUpdateResult[D, Δ, I, J]

Types

type ObserveVal[M[_], Val0[_]] = Observe[M] { type Val = Val0; }
opaque type UpdateResult[D, Δ]