Advertisement
Guest User

Untitled

a guest
Feb 8th, 2016
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.86 KB | None | 0 0
  1. data FileFormat
  2. = Spreadsheet
  3. | Picture
  4. | Video
  5. deriving Show
  6.  
  7. data TmpFile = TmpFile FileFormat FilePath
  8. deriving Show
  9.  
  10. videoPath :: TmpFile -> FilePath
  11. videoPath (TmpFile Video p) = p
  12. videoPath _ = error "only works on videos!"
  13.  
  14. type TmpSpreadsheet = TmpFile Spreadsheet
  15. type TmpPicture = TmpFile Picture
  16. type TmpVideo = TmpFile Video
  17.  
  18. videoPath :: TmpVideo -> FilePath
  19.  
  20. data TmpFile a = TmpFile a FilePath
  21. deriving Show
  22.  
  23. videoPath :: TmpFile Video -> FilePath
  24.  
  25. {-# LANGUAGE EmptyDataDecls #-}
  26.  
  27. data Spreadsheet
  28. data Picture
  29. data Video
  30.  
  31. newtype TmpFile a = TmpFile FilePath
  32.  
  33. videoPath :: TmpFile Video -> FilePath
  34. videoPath (TmpFile p) = p
  35.  
  36. λ> let video = TmpFile "/video/lyah.avi" :: TmpFile Video
  37.  
  38. λ> videoPath video
  39. "/video/lyah.avi"
  40.  
  41. λ> let picture = TmpFile "/video/lyah.png" :: TmpFile Picture
  42.  
  43. λ> videoPath picture
  44. -- ERROR
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement