blob: 3df91f17464e65a306925067e79e7de294711106 (
plain) (
tree)
|
|
(** Effect classification for sublanguage operations.
Categorically:
- Query: a natural transformation between instance functors (DRL).
Side-effect-free; the database state is unchanged.
- Transition: a morphism in the category of database states (DDL,
DML, ICL, DCL, and future TCL). Produces a new state via
substitution (Harper, PFPL ch. 3-4).
Future sublanguages:
- TCL -> Transition (transaction boundaries are state morphisms
with atomicity constraints)
- PPL -> new effect class: potentially non-terminating computation
(Turing-complete; breaks the termination guarantee of DRL)
- ACL -> a functor restriction: narrows the admissible natural
transformations based on authorization context *)
type result =
| Query of Relation.t
| Transition of Management.Database.t * string
module type S = sig
type storage
type ast
type error
val name : string
val parse_sexp : Sexplib.Sexp.t -> (ast, error) Result.t
val execute : storage -> Management.Database.t -> ast -> (result, error) Result.t
val sexp_of_error : error -> Sexplib.Sexp.t
end
|