Skip to content

Instantly share code, notes, and snippets.

@ninjazoete
Created October 1, 2017 18:00
Show Gist options
  • Save ninjazoete/6c3013c6b351b90b7be19077c007d97f to your computer and use it in GitHub Desktop.
Save ninjazoete/6c3013c6b351b90b7be19077c007d97f to your computer and use it in GitHub Desktop.
(Haskell-Book-Chp-11-Task-1)
-- Exercise given data types
data OperatingSystem = GnuPlusLinux
| OpenBSDPlusNevermindJustBSDStill
| Mac
| Windows
deriving (Eq, Show, Enum)
data ProgrammingLanguage = Haskell
| Agda
| Idris
| PureScript
deriving (Eq, Show, Enum)
data Programmer = Programmer { os :: OperatingSystem
, lang :: ProgrammingLanguage }
deriving (Eq, Show)
allOperatingSystem :: [OperatingSystem]
allOperatingSystem = [ GnuPlusLinux
, OpenBSDPlusNevermindJustBSDStill
, Mac
, Windows
]
allLanguages :: [ProgrammingLanguage]
allLanguages = [Haskell, Agda, Idris, PureScript]
-- Task:
-- Write allProgrammers functions which will return all possible Programmers
-- that are working on each OperatingSystem and in each Programming Language.
-- Todays Solution
allProgrammers :: [Programmer]
allProgrammers = (uncurry Programmer) <$> ((,) <$> allOperatingSystem <*> allLanguages)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment