module PreludData where

import DataP
-- data types from prelude, so we can derive things for these
-- as needed without parsing the whole prelude

-- users may want to add commonly-used datatypes to this list, to save
-- repeatedly searching for a type.  The list data is generated using the
-- 'test' rule on the required datatypes.

preludeData :: [Data]
preludeData = [
	D{name="Bool",constraints=[],vars=[],body=[
		Body{constructor="False",labels=[],types=[]},
		Body{constructor="True",labels=[],types=[]}]
	,derives=["Eq", "Ord", "Ix", "Enum", "Read", "Show", "Bounded"]
	,statement=DataStmt},
	D{name="Maybe",constraints=[],vars=["a"],body=[
		Body{constructor="Just",labels=[],types=[Var "a"]},
		Body{constructor="Nothing",labels=[],types=[]}] ,
	derives=["Eq", "Ord", "Read", "Show"],statement=DataStmt},
	D{name="Either",constraints=[],vars=["a", "b"],body=[
		Body{constructor="Left",labels=[],types=[Var "a"]},
		Body{constructor="Right",labels=[],types=[Var "b"]}],
        derives=["Eq", "Ord", "Read", "Show"],statement=DataStmt},
	D{name="Ordering",constraints=[],vars=[],body=[
		Body{constructor="LT",labels=[],types=[]},
		Body{constructor="EQ",labels=[],types=[]},
		Body{constructor="GT",labels=[],types=[]}],
	derives=["Eq", "Ord", "Ix", "Enum", "Read", "Show", "Bounded"],
	statement=DataStmt}]
