packages feed

pandora-io-0.4.9: Pandora/IO/ASCII.hs

module Pandora.IO.ASCII where

import Pandora.Pattern.Object.Setoid (Setoid ((==)))
import Pandora.Pattern.Object.Ringoid (Ringoid ((*)))
import Pandora.Paradigm.Primary.Object.Boolean (Boolean (True, False))

data ASCII = Control Control | Sign Sign | Letter Case Letter | Number Number

instance Setoid ASCII where
	Control c == Control c' = c == c'
	Sign s == Sign s' = s == s'
	Letter с l == Letter с' l' = (с == с') * (l == l')
	Number n == Number n' = n == n'
	_ == _ = False

data Control = NUL | SOH | STX | ETX | EOT | ENQ
	| ACK | BEL | BS | HT | LF | VT | FF | CR | SO | SI
	| DLE | DC1 | DC2 | DC3 | DC4 | NAK | SYN | ETB | CAN
	| EM | SUB | ESC | FS | GS | RS | US | SP | DEL

instance Setoid Control where
	NUL == NUL = True
	SOH == SOH = True
	STX == STX = True
	ETX == ETX = True
	EOT == EOT = True
	ENQ == ENQ = True
	ACK == ACK = True
	BEL == BEL = True
	BS == BS = True
	HT == HT = True
	LF == LF = True
	VT == VT = True
	FF == FF = True
	CR == CR = True
	SO == SO = True
	SI == SI = True
	DLE == DLE = True
	DC1 == DC1 = True
	DC2 == DC2 = True
	DC3 == DC3 = True
	DC4 == DC4 = True
	NAK == NAK = True
	SYN == SYN = True
	ETB == ETB = True
	CAN == CAN = True
	EM == EM = True
	SUB == SUB = True
	ESC == ESC = True
	FS == FS = True
	GS == GS = True
	RS == RS = True
	US == US = True
	SP == SP = True
	DEL == DEL = True
	_ == _ = False

data Sign = Exclamation | Question | Quote Quote | Hash | Dollar | Percent | Ampersand | Apostrophe
	| Asterisk | Plus | Comma | Minus | Period | Slash Slash | Bracket Position Bracket
	| Colon | Semicolon | At | Caret | Underscore | Accent | Bar | Tilde | Equality

instance Setoid Sign where
	Exclamation == Exclamation = True
	Quote q == Quote q' = q == q'
	Hash == Hash = True
	Dollar == Dollar = True
	Percent == Percent = True
	Ampersand == Ampersand = True
	Apostrophe == Apostrophe = True
	Asterisk == Asterisk = True
	Plus == Plus = True
	Comma == Comma = True
	Minus == Minus = True
	Period == Period = True
	Slash s == Slash s' = s == s'
	Bracket p b == Bracket p' b' = (p == p') * (b == b')
	Colon == Colon = True
	Semicolon == Semicolon = True
	At == At = True
	Caret == Caret = True
	Underscore == Underscore = True
	Accent == Accent = True
	Bar == Bar = True
	Tilde == Tilde = True
	_ == _ = False

data Bracket = Round | Square | Angle | Curly

instance Setoid Bracket where
	Round == Round = True
	Square == Square = True
	Angle == Angle = True
	Curly == Curly = True
	_ == _ = False

data Position = Opened | Closed

instance Setoid Position where
	Opened == Opened = True
	Closed == Closed = True
	_ == _ = False

data Slash = Forward | Back

instance Setoid Slash where
	Forward == Forward = True
	Back == Back = True
	_ == _ = False

data Quote = Double | Single

instance Setoid Quote where
	Double == Double = True
	Single == Single = True
	_ == _ = False

data Letter = A | B | C | D | E | F | G | H | I | J | K | L
	| M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

instance Setoid Letter where
	A == A = True
	B == B = True
	C == C = True
	D == D = True
	E == E = True
	F == F = True
	G == G = True
	H == H = True
	I == I = True
	J == J = True
	K == K = True
	L == L = True
	M == M = True
	N == N = True
	O == O = True
	P == P = True
	Q == Q = True
	R == R = True
	S == S = True
	T == T = True
	U == U = True
	V == V = True
	W == W = True
	X == X = True
	Y == Y = True
	Z == Z = True
	_ == _ = False

data Case = Upper | Lower

instance Setoid Case where
	Upper == Upper = True
	Lower == Lower = True
	_ == _ = False

data Number = N0 | N1 | N2 | N3 | N4 | N5 | N6 | N7 | N8 | N9

instance Setoid Number where
	N0 == N0 = True
	N1 == N1 = True
	N2 == N2 = True
	N3 == N3 = True
	N4 == N4 = True
	N5 == N5 = True
	N6 == N6 = True
	N7 == N7 = True
	N8 == N8 = True
	N9 == N9 = True
	_ == _ = False