+
+initBuiltinScalars :: Builtins -> DsM [Var]
+initBuiltinScalars bi
+ = mapM (uncurry externalVar) (preludeScalars $ dphModules bi)
+
+
+preludeScalars :: Modules -> [(Module, FastString)]
+preludeScalars (Modules { dph_Prelude_Int = dph_Prelude_Int
+ , dph_Prelude_Word8 = dph_Prelude_Word8
+ , dph_Prelude_Double = dph_Prelude_Double
+ })
+ = [
+ mk dph_Prelude_Int "div"
+ , mk dph_Prelude_Int "mod"
+ , mk dph_Prelude_Int "sqrt"
+ ]
+ ++ scalars_Ord dph_Prelude_Int
+ ++ scalars_Num dph_Prelude_Int
+
+ ++ scalars_Ord dph_Prelude_Word8
+ ++ scalars_Num dph_Prelude_Word8
+ ++
+ [ mk dph_Prelude_Word8 "div"
+ , mk dph_Prelude_Word8 "mod"
+ , mk dph_Prelude_Word8 "fromInt"
+ , mk dph_Prelude_Word8 "toInt"
+ ]
+
+ ++ scalars_Ord dph_Prelude_Double
+ ++ scalars_Num dph_Prelude_Double
+ ++ scalars_Fractional dph_Prelude_Double
+ ++ scalars_Floating dph_Prelude_Double
+ ++ scalars_RealFrac dph_Prelude_Double
+ where
+ mk mod s = (mod, fsLit s)
+
+ scalars_Ord mod = [mk mod "=="
+ ,mk mod "/="
+ ,mk mod "<="
+ ,mk mod "<"
+ ,mk mod ">="
+ ,mk mod ">"
+ ,mk mod "min"
+ ,mk mod "max"
+ ]
+
+ scalars_Num mod = [mk mod "+"
+ ,mk mod "-"
+ ,mk mod "*"
+ ,mk mod "negate"
+ ,mk mod "abs"
+ ]
+
+ scalars_Fractional mod = [mk mod "/"
+ ,mk mod "recip"
+ ]
+
+ scalars_Floating mod = [mk mod "pi"
+ ,mk mod "exp"
+ ,mk mod "sqrt"
+ ,mk mod "log"
+ ,mk mod "sin"
+ ,mk mod "tan"
+ ,mk mod "cos"
+ ,mk mod "asin"
+ ,mk mod "atan"
+ ,mk mod "acos"
+ ,mk mod "sinh"
+ ,mk mod "tanh"
+ ,mk mod "cosh"
+ ,mk mod "asinh"
+ ,mk mod "atanh"
+ ,mk mod "acosh"
+ ,mk mod "**"
+ ,mk mod "logBase"
+ ]
+
+ scalars_RealFrac mod = [mk mod "fromInt"
+ ,mk mod "truncate"
+ ,mk mod "round"
+ ,mk mod "ceiling"
+ ,mk mod "floor"
+ ]
+
+