
module Base where

postulate String : Set
          Char   : Set
{-# BUILTIN STRING String #-}
{-# BUILTIN CHAR   Char   #-}

data Unit : Set where
  unit : Unit

{-# COMPILED_DATA Unit () #-}

data Bool : Set where
  true  : Bool
  false : Bool

data False  : Set where
record True : Set where

IsTrue : Bool -> Set
IsTrue true = True
IsTrue false = False

{-# COMPILED_DATA Bool True False #-}

infixr 40 _::_
data List (A : Set) : Set where
  [] : List A
  _::_ : A -> List A -> List A

{-# COMPILED_DATA List [] (:) #-}

data _×_ (A B : Set) : Set where
  _,_ : A -> B -> A × B

{-# COMPILED_DATA _×_ (,) #-}
