blob: e5846edd958f9ad5cd3d327707e8e5b72de61e0e (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
include Sublanguage_types
(** 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 *)
module type S = sig
include Configuration.CONFIGURABLE
type ast
val name : string
val parse_sexp : Sexplib.Sexp.t -> (ast, Condition.t) Result.t
val execute : Sublanguage_context.t -> ast -> (result, Condition.t) Result.t
end
|