Guest User

Untitled

a guest
Dec 14th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. -- AST1
  2. data ColExpression = ColE ColName [OperationExpression]
  3.  
  4. data BoolExpression = BECol ColExpression
  5.  
  6. data BoolExpression
  7. = BEAnd [BoolExpression]
  8. | BEOr [BoolExpression]
  9. | BENot BoolExpression
  10. | BECol ColExpression
  11.  
  12.  
  13. -- AST2
  14. data ColExpressionAnnotated = ColEA ColInfo ColExpression
  15.  
  16. data BoolExpressionAnnotated
  17. = BEAnd [BoolExpressionAnnotated]
  18. | BEOr [BoolExpressionAnnotated]
  19. | BENot (BoolExpressionAnnotated)
  20. | BECol ColExpressionAnnotated
  21.  
  22. addAnnotation :: BoolExpression -> BoolExpressionAnnotated
  23.  
  24. -- Parametrised
  25.  
  26. data BoolExpressionG a
  27. = BEAnd [BoolExpression a]
  28. | BEOr [BoolExpression a]
  29. | BENot (BoolExpression a)
  30. | BECol a
  31.  
  32. type BoolExpression = BoolExpressionG ColExpression
  33. type BoolExpressionAnnotated = BoolExpressionG ColExpressionAnnotated
  34.  
  35.  
  36. -- Traversable
  37.  
  38. data BoolExpressionG a
  39. = BEAnd [BoolExpression a]
  40. | BEOr [BoolExpression a]
  41. | BENot (BoolExpression a)
  42. | BECol a
  43. derive (Traversable)
  44.  
  45. type BoolExpression = BoolExpressionG ColExpression
  46. type BoolExpressionAnnotated = BoolExpressionG ColExpressionAnnotated
  47.  
  48. traverse
  49. :: (Applicative f, Traversable t) => (a -> f b) -> t a -> f (t b)
  50.  
  51. addAnnotationToCol :: ColExpression -> Either Error ColExpressionAnnotated
  52. addAnnotationToCol :: (Applicative f) => a -> f b
  53.  
  54. addAnnotation = traverse addAnnotationToCol
Add Comment
Please, Sign In to add comment