on master help sign in
All primitives through equality
a2ba532David Christiansen
src/Core/Execute.hs+37
@@ -331,16 +331,53 @@ execApp' env ctxt f@(EP _ n _) args =
331 primRes BI (i1 .&. i2)
331 primRes BI (i1 .&. i2)
332 getOp (UN "prim__andInt") [EConstant (I i1), EConstant (I i2)] =
332 getOp (UN "prim__andInt") [EConstant (I i1), EConstant (I i2)] =
333 primRes I (i1 .&. i2)
333 primRes I (i1 .&. i2)
334+ getOp (UN "prim__ashrB16") [EConstant (B16 i1), EConstant (B16 i2)] =
335+ primRes B16 (shiftR i1 (fromIntegral i2))
336+ getOp (UN "prim__ashrB32") [EConstant (B32 i1), EConstant (B32 i2)] =
337+ primRes B32 (shiftR i1 (fromIntegral i2))
338+ getOp (UN "prim__ashrB64") [EConstant (B64 i1), EConstant (B64 i2)] =
339+ primRes B64 (shiftR i1 (fromIntegral i2))
340+ getOp (UN "prim__ashrB8") [EConstant (B8 i1), EConstant (B8 i2)] =
341+ primRes B8 (shiftR i1 (fromIntegral i2))
342+ getOp (UN "prim__ashrBigInt") [EConstant (BI i1), EConstant (BI i2)] =
343+ primRes BI (shiftR i1 (fromIntegral i2))
344+ getOp (UN "prim__ashrInt") [EConstant (I i1), EConstant (I i2)] =
345+ primRes I (shiftR i1 i2)
346+ getOp (UN "prim__believe_me") [_, _, arg] = Just (return arg)
334 getOp (UN "prim__charToInt") [EConstant (Ch c)] =
347 getOp (UN "prim__charToInt") [EConstant (Ch c)] =
335 primRes I (fromEnum c)
348 primRes I (fromEnum c)
349+ getOp (UN "prim__complB16") [EConstant (B16 i)] =
350+ primRes B16 (complement i)
351+ getOp (UN "prim__complB32") [EConstant (B32 i)] =
352+ primRes B32 (complement i)
353+ getOp (UN "prim__complB64") [EConstant (B64 i)] =
354+ primRes B64 (complement i)
355+ getOp (UN "prim__complB8") [EConstant (B8 i)] =
356+ primRes B8 (complement i)
357+ getOp (UN "prim__complBigInt") [EConstant (BI i)] =
358+ primRes BI (complement i)
336 getOp (UN "prim__complInt") [EConstant (I i)] =
359 getOp (UN "prim__complInt") [EConstant (I i)] =
337 primRes I (complement i)
360 primRes I (complement i)
338 getOp (UN "prim__concat") [EConstant (Str s1), EConstant (Str s2)] =
361 getOp (UN "prim__concat") [EConstant (Str s1), EConstant (Str s2)] =
339 primRes Str (s1 ++ s2)
362 primRes Str (s1 ++ s2)
363+ getOp (UN "prim__divFloat") [EConstant (Fl f1), EConstant (Fl f2)] =
364+ primRes Fl (f1 / f2)
340 getOp (UN "prim__divInt") [EConstant (I i1), EConstant (I i2)] =
365 getOp (UN "prim__divInt") [EConstant (I i1), EConstant (I i2)] =
341 primRes I (i1 `div` i2)
366 primRes I (i1 `div` i2)
367+ getOp (UN "prim__eqB16") [EConstant (B16 i1), EConstant (B16 i2)] =
368+ primResBool (i1 == i2)
369+ getOp (UN "prim__eqB32") [EConstant (B32 i1), EConstant (B32 i2)] =
370+ primResBool (i1 == i2)
371+ getOp (UN "prim__eqB64") [EConstant (B64 i1), EConstant (B64 i2)] =
372+ primResBool (i1 == i2)
373+ getOp (UN "prim__eqB8") [EConstant (B8 i1), EConstant (B8 i2)] =
374+ primResBool (i1 == i2)
375+ getOp (UN "prim__eqBigInt") [EConstant (BI i1), EConstant (BI i2)] =
376+ primResBool (i1 == i2)
342 getOp (UN "prim__eqChar") [EConstant (Ch c1), EConstant (Ch c2)] =
377 getOp (UN "prim__eqChar") [EConstant (Ch c1), EConstant (Ch c2)] =
343 primResBool (c1 == c2)
378 primResBool (c1 == c2)
379+ getOp (UN "prim__eqFloat") [EConstant (Fl i1), EConstant (Fl i2)] =
380+ primResBool (i1 == i2)
344 getOp (UN "prim__eqInt") [EConstant (I i1), EConstant (I i2)] =
381 getOp (UN "prim__eqInt") [EConstant (I i1), EConstant (I i2)] =
345 primResBool (i1 == i2)
382 primResBool (i1 == i2)
346 getOp (UN "prim__eqString") [EConstant (Str s1), EConstant (Str s2)] =
383 getOp (UN "prim__eqString") [EConstant (Str s1), EConstant (Str s2)] =