@@ -91,12 +91,15 @@ inlineValues = everywhereOnJS convert
9191 | isDict boundedBoolean dict && isFn fnBottom fn = JSBooleanLiteral False
9292 | isDict boundedBoolean dict && isFn fnTop fn = JSBooleanLiteral True
9393 convert (JSApp fn [value]) | isFn fromNumber fn = JSBinary BitwiseOr value (JSNumericLiteral (Left 0))
94+ convert (JSApp (JSApp (JSApp fn [dict]) [x]) [y])
95+ | isDict moduloSemiringInt dict && isFn fnDivide fn = JSBinary BitwiseOr (JSBinary Divide x y) (JSNumericLiteral (Left 0))
9496 convert other = other
9597 fnZero = (C.prelude, C.zero)
9698 fnOne = (C.prelude, C.one)
9799 fnBottom = (C.prelude, C.bottom)
98100 fnTop = (C.prelude, C.top)
99101 fromNumber = (C.dataInt, C.fromNumber)
102+ fnDivide = (C.prelude, (C./))
100103
101104inlineOperator :: (String, String) -> (JS -> JS -> JS) -> JS -> JS
102105inlineOperator (m, op) f = everywhereOnJS convert
@@ -252,6 +255,9 @@ ringInt = (C.dataInt, C.ringInt)
252255moduloSemiringNumber :: (String, String)
253256moduloSemiringNumber = (C.prelude, C.moduloSemiringNumber)
254257
258+moduloSemiringInt :: (String, String)
259+moduloSemiringInt = (C.dataInt, C.moduloSemiringInt)
260+
255261eqNumber :: (String, String)
256262eqNumber = (C.prelude, C.eqNumber)
257263