Skip to content

Commit

Permalink
Lifted null operators now lift operands to nullable
Browse files Browse the repository at this point in the history
  • Loading branch information
ocharles committed Mar 16, 2017
1 parent 7eeeeec commit 82f800e
Showing 1 changed file with 28 additions and 20 deletions.
48 changes: 28 additions & 20 deletions Rel8.hs
Original file line number Diff line number Diff line change
Expand Up @@ -147,28 +147,36 @@ infixl 7 *?
infixl 6 +?, -?

--------------------------------------------------------------------------------
(==?) :: DBEq a => Expr (Maybe a) -> Expr (Maybe a) -> Expr (Maybe Bool)
(==?) = liftOpNull (==.)
(==?)
:: (DBEq a, ToNullable l (Maybe a), ToNullable r (Maybe a))
=> Expr l -> Expr r -> Expr (Maybe Bool)
a ==? b = liftOpNull (==.) (toNullable a) (toNullable b)

(<?), (<=?), (>?), (>=?)
:: DBOrd a
=> Expr (Maybe a) -> Expr (Maybe a) -> Expr (Maybe Bool)
(<?) = liftOpNull (<.)
(<=?) = liftOpNull (<=.)
(>?) = liftOpNull (>.)
(>=?) = liftOpNull (>=.)

(||?), (&&?) :: Expr (Maybe Bool) -> Expr (Maybe Bool) -> Expr (Maybe Bool)
(||?) = liftOpNull (||.)
(&&?) = liftOpNull (&&.)

(+?), (*?), (-?) :: Num (Expr a) => Expr (Maybe a) -> Expr (Maybe a) -> Expr (Maybe a)
(+?) = liftOpNull (+)
(*?) = liftOpNull (*)
(-?) = liftOpNull (-)

(/?) :: Fractional (Expr a) => Expr (Maybe a) -> Expr (Maybe a) -> Expr (Maybe a)
(/?) = liftOpNull (/)
:: (DBOrd a, ToNullable l (Maybe a), ToNullable r (Maybe a))
=> Expr l -> Expr r -> Expr (Maybe Bool)
a <? b = liftOpNull (<.) (toNullable a) (toNullable b)
a <=? b = liftOpNull (<=.) (toNullable a) (toNullable b)
a >? b = liftOpNull (>.) (toNullable a) (toNullable b)
a >=? b = liftOpNull (>=.) (toNullable a) (toNullable b)

(||?), (&&?)
:: (ToNullable bool1 (Maybe Bool), ToNullable bool2 (Maybe Bool))
=> Expr bool1 -> Expr bool2 -> Expr (Maybe Bool)
a ||? b = liftOpNull (||.) (toNullable a) (toNullable b)
a &&? b = liftOpNull (&&.) (toNullable a) (toNullable b)

(+?), (*?), (-?)
:: (Num (Expr a), ToNullable l (Maybe a), ToNullable r (Maybe a))
=> Expr l -> Expr r -> Expr (Maybe a)
a +? b = liftOpNull (+) (toNullable a) (toNullable b)
a *? b = liftOpNull (*) (toNullable a) (toNullable b)
a -? b = liftOpNull (-) (toNullable a) (toNullable b)

(/?)
:: (Fractional (Expr a), ToNullable l (Maybe a), ToNullable r (Maybe a))
=> Expr l -> Expr r -> Expr (Maybe a)
a /? b = liftOpNull (/) (toNullable a) (toNullable b)

--------------------------------------------------------------------------------
unsafeLiteral :: String -> Expr a
Expand Down

0 comments on commit 82f800e

Please sign in to comment.