on 13eac89 help sign in
rel8/src/Rel8/Expr/Num.hs
80 lines 1.7 kB history raw
1{-# language TypeFamilies #-}
3{-# options_ghc -fno-warn-redundant-constraints #-}
5module Rel8.Expr.Num
6 ( fromIntegral, realToFrac, div, mod, ceiling, floor, round, truncate
7 )
8where
10-- base
11import Prelude ()
13-- rel
14import Rel8.Expr ( Expr( Expr ) )
15import Rel8.Expr.Function ( function )
16import Rel8.Expr.Opaleye ( castExpr )
17import Rel8.Schema.Nullability ( IsMaybe, Nullabilizes )
18import Rel8.Type.Num ( DBFractional, DBIntegral, DBNum )
21fromIntegral ::
22 ( DBIntegral _a, Nullabilizes _a a
23 , DBNum _b, Nullabilizes _b b
24 , IsMaybe a ~ IsMaybe b
25 )
26 => Expr a -> Expr b
27fromIntegral (Expr a) = castExpr (Expr a)
30realToFrac ::
31 ( DBNum _a, Nullabilizes _a a
32 , DBFractional _b, Nullabilizes _b b
33 , IsMaybe a ~ IsMaybe b
34 )
35 => Expr a -> Expr b
36realToFrac (Expr a) = castExpr (Expr a)
39ceiling ::
40 ( DBFractional _a, Nullabilizes _a a
41 , DBIntegral _b, Nullabilizes _b b
42 , IsMaybe a ~ IsMaybe b
43 )
44 => Expr a -> Expr b
45ceiling = function "CEILING"
48div :: (DBIntegral _a, Nullabilizes _a a) => Expr a -> Expr a -> Expr a
49div = function "DIV"
52mod :: (DBIntegral _a, Nullabilizes _a a) => Expr a -> Expr a -> Expr a
53mod = function "MOD"
56floor ::
57 ( DBFractional _a, Nullabilizes _a a
58 , DBIntegral _b, Nullabilizes _b b
59 , IsMaybe a ~ IsMaybe b
60 )
61 => Expr a -> Expr b
62floor = function "FLOOR"
65round ::
66 ( DBFractional _a, Nullabilizes _a a
67 , DBIntegral _b, Nullabilizes _b b
68 , IsMaybe a ~ IsMaybe b
69 )
70 => Expr a -> Expr b
71round = function "ROUND"
74truncate ::
75 ( DBFractional _a, Nullabilizes _a a
76 , DBIntegral _b, Nullabilizes _b b
77 , IsMaybe a ~ IsMaybe b
78 )
79 => Expr a -> Expr b
80truncate = function "TRUNC"