cookbook-2.3.3.1: Cookbook/Project/Quill/Quill2/Q2Prelude.hs
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE InstanceSigs #-}
{-# LANGUAGE KindSignatures #-}
{- |
Module : Cookbook.Project.Quill.Quill2.Q2Prelude
Copyright : (c) 2014 by Nate Pisarski
License : BSD3
Maintainer : nathanpisarski@gmail.com
Stability : Stable
Portability : Portable (Cookbook)
Q2Prelude is the entry-level module for Quill2. It defines the data types that define data, databases, and errors throughout the rest of Quill2.
-}
module Cookbook.Project.Quill.Quill2.Q2Prelude where
-- | The body of a table or list.
data Element a = List [a] | Table [(a,a)] deriving (Eq, Show)
-- | Helper type. Binds a name to a body.
type Quill = (String,Element String)
-- | Encapsulates errors in the quill database. Currently supports Missing elements and Multiple Instances.
data QuillStatus a = QuillSuccess a | QuillMissing String | QuillMultiple String deriving (Eq, Show)--Find and change these.
-- | Safe way of adding items to a Quill database. Allows type-checking on Lists and Tables when manipulating Elements.
data QuillAddition = AList (String, String) | ATable (String, String, String) deriving (Eq, Show)