datacat

Modules

join
module datacat.join
map
module datacat.map
range
module datacat.range

Public Imports

datacat.join
public import datacat.join : fromJoin, fromAntiJoin;
datacat.map
public import datacat.map : fromMap;
datacat.range
public import datacat.range;

Members

Aliases

Iteration
alias Iteration = IterationImpl!(ThreadStrategy.single)
Undocumented in source.
KVTuple
alias KVTuple(K, V) = Tuple!(K, "key", V, "value")
Undocumented in source.
KVTuple
alias KVTuple(K) = Tuple!(K, "key")
Undocumented in source.
ParallelIteration
alias ParallelIteration = IterationImpl!(ThreadStrategy.parallel)
Undocumented in source.

Classes

Variable
class Variable(TupleT, ThreadStrategy TS = ThreadStrategy.single)

An monotonically increasing set of Tuples.

Enums

ThreadStrategy
enum ThreadStrategy
Undocumented in source.
hasKeyField
eponymoustemplate hasKeyField(T)

True iff T has a key field.

hasKeyValueFields
eponymoustemplate hasKeyValueFields(T)

True iff T has the fields key and value.

hasValueField
eponymoustemplate hasValueField(T)

True iff T has a value field.

isSameKeyType
eponymoustemplate isSameKeyType(T0, T1)

True iff T0 and T1 keys are the same type.

isTuple
eponymoustemplate isTuple(T)

A type that has a key and value member.

isVariable
eponymoustemplate isVariable(T)

A type that can report on whether it has changed. changed = Reports whether the variable has changed since it was last asked.

Functions

kvTuple
auto kvTuple(K k, V v)
auto kvTuple(K k)

Convenient function for creating a key/value tuple.

makeIteration
auto makeIteration(TaskPool tpool)

Make an Iteration.

Interfaces

VariableTrait
interface VariableTrait

A type that can report on whether it has changed.

Structs

IterationImpl
struct IterationImpl(ThreadStrategy Kind)

An iterative context for recursive evaluation.

Relation
struct Relation(TupleT)

A static, ordered list of key-value pairs.

Templates

Variable
template Variable(Args...)

Create a Variable type with a tuple of the provided types (Args).

relation
template relation(Args...)

Create a Relation type with a tuple of the provided types (Args).

Meta

License

APACHE-2.0

Authors

Joakim BrännströmJoakim Brännström (joakim.brannstrom@gmx.com)

Port of DataFrog (Datalog engine in Rust) to D.

The intended design is that one has static Relation types that are sets of tuples, and Variable types that represent monotonically increasing sets of tuples.

The types are mostly wrappers around Vec<Tuple> indicating sorted-ness, and the intent is that this code can be dropped in the middle of an otherwise normal Rust program, run to completion, and then the results extracted as vectors again.