, Haskell:
data Person = Person { name :: String
, address :: String }
deriving (Eq, Read, Show)
data Department = Management | Accounting | IT | Programming
deriving (Eq, Read, Show)
data Employee = Employee { identity :: Person
, idNumber :: Int
, department :: Department }
| Contractor { identity :: Person
, company :: String }
deriving (Eq, Read, Show)
, a Person Person, name address ( String s); a Department Management, Accounting, IT, Programming; Employee Employee, identity (a Person), a idNumber (an Int) a Department (a Department), Contractor, identity (a Person) a company (a String). deriving (Eq, Read, Show) , .
Haskell ( ) ( ). 1 | (): a Employee Employee, a Contractor, a Department .. :
data Process = Process String Int
, Process ( ) String -> Int -> Process. , , Process "init" 1 Process "ls" 57300. A Process String, Int. , , ; data Person = Person String String,
name :: Person -> String
name (Person n _) = n
address :: Person -> String
address (Person _ a) = a
, , .
, Haskell ; , data Point3 a = Point3 a a a. , Point3 :: a -> a -> a -> Point3 a, Point3 (3 :: Int) (4 :: Int) (5 :: Int), Point3 Int Point3 (1.1 :: Double) (2.2 :: Double) (3.3 :: Double), Point3 Double. ( Point3 1 2 3, Num a => Point3 a, .)
, . : , , , , ( C Python, Prolog Ruby, Erlang Java, ) - . , , , , . , Haskell , , , Java. -: , Java, , (map :: (a -> b) -> [a] -> [b], filter :: (a -> Bool) -> [a] -> [a] foldr :: (a -> b -> b) -> b -> [a] -> b ). . , , . , . : -)
1: : , , data Tree a = Leaf a | Branch a (Tree a) (Tree a).