HaskRel-0.1.0.0: HaskRel, Haskell as a DBMS with support for the relational algebra

Copyright© Thor Michael Støre, 2015
LicenseGPL v2 without "any later version" clause
Maintainerthormichael át gmail døt com
Stabilityexperimental
Safe HaskellNone
LanguageHaskell2010

Database.HaskRel.RDBMS

Contents

Description

Exports the pertinent parts of HaskRel building on HList records. This gives most features of the relational algebra, relation variable support, HList CommonMain, as well as certain non-relational features such as ordering.

Synopsis

Documentation

The relational model of database management: A subset thereof

data Relvar a Source

Relation variable reference. This type has a phantom type variable, which generally calls for the type to be explicity specified:

 s = Relvar "SuppliersPartsDB/S.rv" :: Relvar '[SNO, SName, Status, City]

Constructors

Relvar 

Fields

relvarPath :: FilePath
 

Instances

Typeable [*] a => Show (Relvar a) Source 
(Ord (HList b), Read (HList (RecordValuesR b)), Typeable [*] b, RecordValues b, HMapAux HList TaggedFn (RecordValuesR b) b, HFoldr (Mapcar HPresentTypedRecAttr) [[String]] (RecordValuesR b) [[String]], HFoldr (Mapcar HPresentRecAttr) [[String]] (RecordValuesR b) [[String]]) => HFWPresent (Relvar b) Source 
(Ord (HList b), Read (HList (RecordValuesR b)), RecordValues b, HMapAux HList TaggedFn (RecordValuesR b) b) => RelAssign (Relvar b) Source 
(Ord (HList b), Read (HList (RecordValuesR b)), RecordValues b, HMapAux HList TaggedFn (RecordValuesR b) b) => MonOp (Relvar b) Source 
(Ord (HList b), Read (HList (RecordValuesR b)), RecordValues b, HMapAux HList TaggedFn (RecordValuesR b) b) => DyaOp (IO (Relation a)) (Relvar b) Source 
(Ord (HList b), Read (HList (RecordValuesR b)), RecordValues b, HMapAux HList TaggedFn (RecordValuesR b) b) => DyaOp (Relation a) (Relvar b) Source 
(Ord (HList a), Ord (HList b), Read (HList (RecordValuesR a)), Read (HList (RecordValuesR b)), RecordValues a, RecordValues b, HMapAux HList TaggedFn (RecordValuesR a) a, HMapAux HList TaggedFn (RecordValuesR b) b) => DyaOp (Relvar a) (Relvar b) Source 
(Ord (HList a), Read (HList (RecordValuesR a)), RecordValues a, HMapAux HList TaggedFn (RecordValuesR a) a) => DyaOp (Relvar a) (IO (Relation b)) Source 
(Ord (HList a), Read (HList (RecordValuesR a)), RecordValues a, HMapAux HList TaggedFn (RecordValuesR a) a) => DyaOp (Relvar a) (Relation b) Source 
type RelAssignArg (Relvar b) = Relation b Source 
type DyaOpLeft (Relvar a) = Relation a Source 
type DyaOpLeft (Relvar a) = Relation a Source 
type DyaOpLeft (Relvar a) = Relation a Source 
type DyaOpRight (Relvar b) = Relation b Source 
type DyaOpRight (Relvar b) = Relation b Source 
type DyaOpRight (Relvar b) = Relation b Source 
type MonOpArg (Relvar b) = Relation b Source 
type MonOpRes (Relvar b) res = IO res 
type DyaOpRes (IO (Relation a)) (Relvar b) res = IO res 
type DyaOpRes (Relation a) (Relvar b) res = IO res 
type DyaOpRes (Relvar a) (Relvar b) res = IO res 
type DyaOpRes (Relvar a) (IO (Relation b)) res = IO res 
type DyaOpRes (Relvar a) (Relation b) res = IO res 

relvarType :: Relvar a -> Relation a Source

Gives the type a relvar results in. Note that the value this results in will always be undefined.

readRelvar :: (Ord (HList b), Read (HList (RecordValuesR b)), RecordValues b, HMapAux HList TaggedFn (RecordValuesR b) b) => Relvar b -> IO (Relation b) Source

Read a relation variable from the file referenced by the first argument

Non-relational features