41 lines
911 B
Haskell
41 lines
911 B
Haskell
module Programmer where
|
|
|
|
data OperatingSystem = GnuPlusLinux
|
|
| OpenBSDPlusNevermindJustBSDStill
|
|
| Mac
|
|
| Windows
|
|
deriving (Eq, Show)
|
|
|
|
data ProgLang = Haskell
|
|
| Agda
|
|
| Idris
|
|
| PureScript
|
|
deriving (Eq, Show)
|
|
|
|
data Programmer = Programmer { os :: OperatingSystem
|
|
, lang :: ProgLang }
|
|
deriving (Eq, Show)
|
|
|
|
allOperatingSystems :: [OperatingSystem]
|
|
allOperatingSystems =
|
|
[ GnuPlusLinux
|
|
, OpenBSDPlusNevermindJustBSDStill
|
|
, Mac
|
|
, Windows
|
|
]
|
|
|
|
allLanguages :: [ProgLang]
|
|
allLanguages =
|
|
[ Haskell
|
|
, Agda
|
|
, Idris
|
|
, PureScript
|
|
]
|
|
|
|
allProgrammers :: [Programmer]
|
|
allProgrammers = do
|
|
o <- allOperatingSystems
|
|
l <- allLanguages
|
|
return Programmer { os = o
|
|
, lang = l }
|