haskell , , , newtype .
datastrong > , , .
data E = A | B
E, .
sum.
?
.
useE :: E -> String
useE A = "This is A"
useE B = "This is B"
, .
data Q = Q0 | Q1 | Q2 deriving (Eq, Enum, Bounded)
, , sum, Q, : Q0, Q1 Q2. , , ( ), ( ) Eq, Enum, Bounded class.
?
.
, Q, ?
enumQ :: Q -> Int
enumQ x = fromEnum x
, , : info Enum ghci. , . ( |), , .
, .
data DFA q o = DFA (q -> o -> q) q [q]
data NFA q o = NFA (q -> o -> [q]) [q] [q]
- , .
data DFA q o = DFA (q -> o -> q) q [q]
.
, , ,
- [x]: , , , [Int] = > Int
- x: , (Int, Char, String...)
- x → y: , , x,
y.
- x → y → z: , , x a
y, z. , (x- > y) z. , .
, , , , q o, . , .
, , , , n1?
.