Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- data FileFormat
- = Spreadsheet
- | Picture
- | Video
- deriving Show
- data TmpFile = TmpFile FileFormat FilePath
- deriving Show
- videoPath :: TmpFile -> FilePath
- videoPath (TmpFile Video p) = p
- videoPath _ = error "only works on videos!"
- type TmpSpreadsheet = TmpFile Spreadsheet
- type TmpPicture = TmpFile Picture
- type TmpVideo = TmpFile Video
- videoPath :: TmpVideo -> FilePath
- data TmpFile a = TmpFile a FilePath
- deriving Show
- videoPath :: TmpFile Video -> FilePath
- {-# LANGUAGE EmptyDataDecls #-}
- data Spreadsheet
- data Picture
- data Video
- newtype TmpFile a = TmpFile FilePath
- videoPath :: TmpFile Video -> FilePath
- videoPath (TmpFile p) = p
- λ> let video = TmpFile "/video/lyah.avi" :: TmpFile Video
- λ> videoPath video
- "/video/lyah.avi"
- λ> let picture = TmpFile "/video/lyah.png" :: TmpFile Picture
- λ> videoPath picture
- -- ERROR
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement