{-# LANGUAGE OverloadedStrings, PatternGuards, StandaloneDeriving #-}
module IRTS.JavaScript.PrimOp
( PrimF
, PrimDec
, JsPrimTy(..)
, primDB
, jsPrimCoerce
) where
import qualified Data.Map.Strict as Map
import Idris.Core.TT
import IRTS.JavaScript.AST
import IRTS.Lang
data JsPrimTy = PTBool | PTAny deriving (JsPrimTy -> JsPrimTy -> Bool
(JsPrimTy -> JsPrimTy -> Bool)
-> (JsPrimTy -> JsPrimTy -> Bool) -> Eq JsPrimTy
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: JsPrimTy -> JsPrimTy -> Bool
== :: JsPrimTy -> JsPrimTy -> Bool
$c/= :: JsPrimTy -> JsPrimTy -> Bool
/= :: JsPrimTy -> JsPrimTy -> Bool
Eq, Eq JsPrimTy
Eq JsPrimTy =>
(JsPrimTy -> JsPrimTy -> Ordering)
-> (JsPrimTy -> JsPrimTy -> Bool)
-> (JsPrimTy -> JsPrimTy -> Bool)
-> (JsPrimTy -> JsPrimTy -> Bool)
-> (JsPrimTy -> JsPrimTy -> Bool)
-> (JsPrimTy -> JsPrimTy -> JsPrimTy)
-> (JsPrimTy -> JsPrimTy -> JsPrimTy)
-> Ord JsPrimTy
JsPrimTy -> JsPrimTy -> Bool
JsPrimTy -> JsPrimTy -> Ordering
JsPrimTy -> JsPrimTy -> JsPrimTy
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: JsPrimTy -> JsPrimTy -> Ordering
compare :: JsPrimTy -> JsPrimTy -> Ordering
$c< :: JsPrimTy -> JsPrimTy -> Bool
< :: JsPrimTy -> JsPrimTy -> Bool
$c<= :: JsPrimTy -> JsPrimTy -> Bool
<= :: JsPrimTy -> JsPrimTy -> Bool
$c> :: JsPrimTy -> JsPrimTy -> Bool
> :: JsPrimTy -> JsPrimTy -> Bool
$c>= :: JsPrimTy -> JsPrimTy -> Bool
>= :: JsPrimTy -> JsPrimTy -> Bool
$cmax :: JsPrimTy -> JsPrimTy -> JsPrimTy
max :: JsPrimTy -> JsPrimTy -> JsPrimTy
$cmin :: JsPrimTy -> JsPrimTy -> JsPrimTy
min :: JsPrimTy -> JsPrimTy -> JsPrimTy
Ord)
type PrimF = [JsExpr] -> JsExpr
type PrimDec = (Bool, JsPrimTy, PrimF)
primDB :: Map.Map PrimFn PrimDec
primDB :: Map PrimFn PrimDec
primDB =
[(PrimFn, PrimDec)] -> Map PrimFn PrimDec
forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList [
PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LPlus ArithTy
ATFloat) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
"+"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LPlus (IntTy -> ArithTy
ATInt IntTy
ITChar)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"String.fromCharCode(%0.charCodeAt(0) + %1.charCodeAt(0))"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LPlus (IntTy -> ArithTy
ATInt IntTy
ITNative)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
"+"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LPlus (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT8))) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 + %1 & 0xFF"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LPlus (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT16))) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 + %1 & 0xFFFF"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LPlus (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT32))) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0+%1|0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LPlus (IntTy -> ArithTy
ATInt IntTy
ITBig)) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
method Text
"add"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LPlus (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT64))) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$
\[JsExpr
l, JsExpr
r] -> Text -> PrimF
JsForeign Text
"%0.add(%1).and(new $JSRTS.jsbn.BigInteger(%2))" [JsExpr
l,JsExpr
r, String -> JsExpr
JsStr (String -> JsExpr) -> String -> JsExpr
forall a b. (a -> b) -> a -> b
$ Integer -> String
forall a. Show a => a -> String
show Integer
0xFFFFFFFFFFFFFFFF]
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LMinus ArithTy
ATFloat) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
"-"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LMinus (IntTy -> ArithTy
ATInt IntTy
ITChar)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"String.fromCharCode(%0.charCodeAt(0) - %1.charCodeAt(0))"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LMinus (IntTy -> ArithTy
ATInt IntTy
ITNative)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
"-"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LMinus (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT8))) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 - %1 & 0xFF"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LMinus (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT16))) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 - %1 & 0xFFFF"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LMinus (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT32))) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0-%1|0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LMinus (IntTy -> ArithTy
ATInt IntTy
ITBig)) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
method Text
"subtract"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LMinus (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT64))) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$
\[JsExpr
l, JsExpr
r] -> Text -> PrimF
JsForeign Text
"%0.subtract(%1).and(new $JSRTS.jsbn.BigInteger(%2))" [JsExpr
l,JsExpr
r, String -> JsExpr
JsStr (String -> JsExpr) -> String -> JsExpr
forall a b. (a -> b) -> a -> b
$ Integer -> String
forall a. Show a => a -> String
show Integer
0xFFFFFFFFFFFFFFFF]
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LTimes ArithTy
ATFloat) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
"*"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LTimes (IntTy -> ArithTy
ATInt IntTy
ITChar)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"String.fromCharCode(%0.charCodeAt(0) * %1.charCodeAt(0))"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LTimes (IntTy -> ArithTy
ATInt IntTy
ITNative)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
"*"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LTimes (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT8))) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 * %1 & 0xFF"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LTimes (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT16))) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 * %1 & 0xFFFF"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LTimes (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT32))) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0*%1|0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LTimes (IntTy -> ArithTy
ATInt IntTy
ITBig)) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
method Text
"multiply"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LTimes (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT64))) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$
\[JsExpr
l, JsExpr
r] -> Text -> PrimF
JsForeign Text
"%0.multiply(%1).and(new $JSRTS.jsbn.BigInteger(%2))" [JsExpr
l,JsExpr
r, String -> JsExpr
JsStr (String -> JsExpr) -> String -> JsExpr
forall a b. (a -> b) -> a -> b
$ Integer -> String
forall a. Show a => a -> String
show Integer
0xFFFFFFFFFFFFFFFF]
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LUDiv (NativeTy -> IntTy
ITFixed NativeTy
IT8)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 / %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LUDiv (NativeTy -> IntTy
ITFixed NativeTy
IT16)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 / %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LUDiv (NativeTy -> IntTy
ITFixed NativeTy
IT32)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"(%0>>>0) / (%1>>>0) |0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LUDiv (NativeTy -> IntTy
ITFixed NativeTy
IT64)) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0.divide(%1)"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSDiv ArithTy
ATFloat) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
"/"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSDiv (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT8))) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 / %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSDiv (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT16))) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 / %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSDiv (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT32))) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 / %1 |0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSDiv (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT64))) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0.divide(%1)"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSDiv (IntTy -> ArithTy
ATInt IntTy
ITNative)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0/%1|0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSDiv (IntTy -> ArithTy
ATInt IntTy
ITBig)) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
method Text
"divide"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LURem (NativeTy -> IntTy
ITFixed NativeTy
IT8)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 % %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LURem (NativeTy -> IntTy
ITFixed NativeTy
IT16)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 % %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LURem (NativeTy -> IntTy
ITFixed NativeTy
IT32)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"(%0>>>0) % (%1>>>0) |0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LURem (NativeTy -> IntTy
ITFixed NativeTy
IT64)) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
method Text
"remainder"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSRem ArithTy
ATFloat) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
"%"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSRem (IntTy -> ArithTy
ATInt IntTy
ITNative)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
"%"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSRem (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT8))) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 % %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSRem (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT16))) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 % %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSRem (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT32))) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 % %1 |0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSRem (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT64))) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
method Text
"remainder"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSRem (IntTy -> ArithTy
ATInt IntTy
ITBig)) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
method Text
"remainder"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LAnd IntTy
ITNative) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 & %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LAnd (NativeTy -> IntTy
ITFixed NativeTy
IT8)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 & %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LAnd (NativeTy -> IntTy
ITFixed NativeTy
IT16)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 & %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LAnd (NativeTy -> IntTy
ITFixed NativeTy
IT32)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 & %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LAnd (NativeTy -> IntTy
ITFixed NativeTy
IT64)) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
method Text
"and"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LAnd IntTy
ITBig) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
method Text
"and"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LOr IntTy
ITNative) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 | %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LOr (NativeTy -> IntTy
ITFixed NativeTy
IT8)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 | %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LOr (NativeTy -> IntTy
ITFixed NativeTy
IT16)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 | %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LOr (NativeTy -> IntTy
ITFixed NativeTy
IT32)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 | %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LOr (NativeTy -> IntTy
ITFixed NativeTy
IT64)) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
method Text
"or"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LOr IntTy
ITBig) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
method Text
"or"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LXOr IntTy
ITNative) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 ^ %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LXOr (NativeTy -> IntTy
ITFixed NativeTy
IT8)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 ^ %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LXOr (NativeTy -> IntTy
ITFixed NativeTy
IT16)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 ^ %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LXOr (NativeTy -> IntTy
ITFixed NativeTy
IT32)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 ^ %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LXOr (NativeTy -> IntTy
ITFixed NativeTy
IT64)) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
method Text
"xor"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LXOr IntTy
ITBig) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
method Text
"xor"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LSHL IntTy
ITNative) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 << %1 |0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LSHL (NativeTy -> IntTy
ITFixed NativeTy
IT8)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 << %1 & 0xFF"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LSHL (NativeTy -> IntTy
ITFixed NativeTy
IT16)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 << %1 & 0xFFFF"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LSHL (NativeTy -> IntTy
ITFixed NativeTy
IT32)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 << %1 | 0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LSHL (NativeTy -> IntTy
ITFixed NativeTy
IT64)) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$
\[JsExpr
l, JsExpr
r] -> Text -> PrimF
JsForeign Text
"%0.shiftLeft(%1).and(new $JSRTS.jsbn.BigInteger(%2))" [JsExpr
l,JsExpr
r, String -> JsExpr
JsStr (String -> JsExpr) -> String -> JsExpr
forall a b. (a -> b) -> a -> b
$ Integer -> String
forall a. Show a => a -> String
show Integer
0xFFFFFFFFFFFFFFFF]
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LSHL IntTy
ITBig) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
method Text
"shiftLeft"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LLSHR IntTy
ITNative) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 >>> %1 |0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LLSHR (NativeTy -> IntTy
ITFixed NativeTy
IT8)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 >>> %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LLSHR (NativeTy -> IntTy
ITFixed NativeTy
IT16)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 >>> %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LLSHR (NativeTy -> IntTy
ITFixed NativeTy
IT32)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 >>> %1|0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LLSHR (NativeTy -> IntTy
ITFixed NativeTy
IT64)) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0.shiftRight(%1)"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LASHR IntTy
ITNative) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 >> %1 |0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LASHR (NativeTy -> IntTy
ITFixed NativeTy
IT8)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 >> %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LASHR (NativeTy -> IntTy
ITFixed NativeTy
IT16)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 >> %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LASHR (NativeTy -> IntTy
ITFixed NativeTy
IT32)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 >> %1|0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LASHR (NativeTy -> IntTy
ITFixed NativeTy
IT64)) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0.shiftRight(%1)"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LCompl (NativeTy -> IntTy
ITFixed NativeTy
IT8)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"~%0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LCompl (NativeTy -> IntTy
ITFixed NativeTy
IT16)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"~%0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LCompl (NativeTy -> IntTy
ITFixed NativeTy
IT32)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"~%0|0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LCompl (NativeTy -> IntTy
ITFixed NativeTy
IT64)) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
method Text
"not"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LEq ArithTy
ATFloat) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
"==="
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LEq (IntTy -> ArithTy
ATInt IntTy
ITNative)) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
"==="
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LEq (IntTy -> ArithTy
ATInt IntTy
ITChar)) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
"==="
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LEq (IntTy -> ArithTy
ATInt IntTy
ITBig)) Bool
True JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
method Text
"equals"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LEq (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT8))) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
"==="
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LEq (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT16))) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
"==="
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LEq (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT32))) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
"==="
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LEq (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT64))) Bool
True JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
method Text
"equals"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LLt (NativeTy -> IntTy
ITFixed NativeTy
IT8)) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 < %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LLt (NativeTy -> IntTy
ITFixed NativeTy
IT16)) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 < %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LLt (NativeTy -> IntTy
ITFixed NativeTy
IT32)) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"(%0>>>0) < (%1>>>0)"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LLt (NativeTy -> IntTy
ITFixed NativeTy
IT64)) Bool
True JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0.compareTo(%1) < 0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LLe (NativeTy -> IntTy
ITFixed NativeTy
IT8)) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 <= %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LLe (NativeTy -> IntTy
ITFixed NativeTy
IT16)) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 <= %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LLe (NativeTy -> IntTy
ITFixed NativeTy
IT32)) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"(%0>>>0) <= (%1>>>0)"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LLe (NativeTy -> IntTy
ITFixed NativeTy
IT64)) Bool
True JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0.compareTo(%1) <= 0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LGt (NativeTy -> IntTy
ITFixed NativeTy
IT8)) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 > %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LGt (NativeTy -> IntTy
ITFixed NativeTy
IT16)) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 > %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LGt (NativeTy -> IntTy
ITFixed NativeTy
IT32)) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"(%0>>>0) > (%1>>>0)"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LGt (NativeTy -> IntTy
ITFixed NativeTy
IT64)) Bool
True JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0.compareTo(%1) > 0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LGe (NativeTy -> IntTy
ITFixed NativeTy
IT8)) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 >= %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LGe (NativeTy -> IntTy
ITFixed NativeTy
IT16)) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 >= %1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LGe (NativeTy -> IntTy
ITFixed NativeTy
IT32)) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"(%0>>>0) >= (%1>>>0)"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LGe (NativeTy -> IntTy
ITFixed NativeTy
IT64)) Bool
True JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0.compareTo(%1) >= 0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSLt ArithTy
ATFloat) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
"<"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSLt (IntTy -> ArithTy
ATInt IntTy
ITChar)) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
"<"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSLt (IntTy -> ArithTy
ATInt IntTy
ITNative)) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
"<"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSLt (IntTy -> ArithTy
ATInt IntTy
ITBig)) Bool
True JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0.compareTo(%1) < 0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSLt (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT8))) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
"<"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSLt (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT16))) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
"<"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSLt (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT32))) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
"<"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSLt (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT64))) Bool
True JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0.compareTo(%1) < 0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSLe ArithTy
ATFloat) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
"<="
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSLe (IntTy -> ArithTy
ATInt IntTy
ITNative)) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
"<="
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSLe (IntTy -> ArithTy
ATInt IntTy
ITBig)) Bool
True JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0.compareTo(%1) <= 0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSLe (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT8))) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
"<="
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSLe (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT16))) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
"<="
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSLe (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT32))) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
"<="
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSLe (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT64))) Bool
True JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0.compareTo(%1) <= 0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSGt ArithTy
ATFloat) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
">"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSGt (IntTy -> ArithTy
ATInt IntTy
ITNative)) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
">"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSGt (IntTy -> ArithTy
ATInt IntTy
ITBig)) Bool
True JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0.compareTo(%1) > 0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSGt (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT8))) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
">"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSGt (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT16))) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
">"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSGt (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT32))) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
">"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSGt (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT64))) Bool
True JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0.compareTo(%1) > 0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSGe ArithTy
ATFloat) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
">="
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSGe (IntTy -> ArithTy
ATInt IntTy
ITNative)) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
">="
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSGe (IntTy -> ArithTy
ATInt IntTy
ITBig)) Bool
True JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0.compareTo(%1) >= 0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSGe (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT8))) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
">="
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSGe (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT16))) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
">="
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSGe (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT32))) Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
">="
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (ArithTy -> PrimFn
LSGe (IntTy -> ArithTy
ATInt (NativeTy -> IntTy
ITFixed NativeTy
IT64))) Bool
True JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0.compareTo(%1) >= 0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> IntTy -> PrimFn
LSExt IntTy
ITNative IntTy
ITBig) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"new $JSRTS.jsbn.BigInteger(''+%0)"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> IntTy -> PrimFn
LZExt (NativeTy -> IntTy
ITFixed NativeTy
IT8) IntTy
ITNative) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ PrimF
forall a. HasCallStack => [a] -> a
head
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> IntTy -> PrimFn
LZExt (NativeTy -> IntTy
ITFixed NativeTy
IT16) IntTy
ITNative) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ PrimF
forall a. HasCallStack => [a] -> a
head
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> IntTy -> PrimFn
LZExt (NativeTy -> IntTy
ITFixed NativeTy
IT32) IntTy
ITNative) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ PrimF
forall a. HasCallStack => [a] -> a
head
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> IntTy -> PrimFn
LZExt IntTy
ITNative IntTy
ITBig) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"new $JSRTS.jsbn.BigInteger(''+%0)"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> IntTy -> PrimFn
LZExt (NativeTy -> IntTy
ITFixed NativeTy
IT8) IntTy
ITBig) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"new $JSRTS.jsbn.BigInteger(''+%0)"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> IntTy -> PrimFn
LZExt (NativeTy -> IntTy
ITFixed NativeTy
IT16) IntTy
ITBig) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"new $JSRTS.jsbn.BigInteger(''+%0)"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> IntTy -> PrimFn
LZExt (NativeTy -> IntTy
ITFixed NativeTy
IT32) IntTy
ITBig) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"new $JSRTS.jsbn.BigInteger(''+%0)"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> IntTy -> PrimFn
LZExt (NativeTy -> IntTy
ITFixed NativeTy
IT64) IntTy
ITBig) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ PrimF
forall a. HasCallStack => [a] -> a
head
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> IntTy -> PrimFn
LTrunc IntTy
ITBig IntTy
ITNative) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0.intValue()|0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> IntTy -> PrimFn
LTrunc IntTy
ITBig (NativeTy -> IntTy
ITFixed NativeTy
IT8)) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0.intValue() & 0xFF"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> IntTy -> PrimFn
LTrunc IntTy
ITBig (NativeTy -> IntTy
ITFixed NativeTy
IT16)) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0.intValue() & 0xFFFF"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> IntTy -> PrimFn
LTrunc IntTy
ITBig (NativeTy -> IntTy
ITFixed NativeTy
IT32)) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0.intValue() & 0xFFFFFFFF"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> IntTy -> PrimFn
LTrunc IntTy
ITBig (NativeTy -> IntTy
ITFixed NativeTy
IT64)) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$
\[JsExpr
x] -> Text -> PrimF
JsForeign Text
"%0.and(new $JSRTS.jsbn.BigInteger(%1))" [JsExpr
x, String -> JsExpr
JsStr (String -> JsExpr) -> String -> JsExpr
forall a b. (a -> b) -> a -> b
$ Integer -> String
forall a. Show a => a -> String
show Integer
0xFFFFFFFFFFFFFFFF]
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> IntTy -> PrimFn
LTrunc (NativeTy -> IntTy
ITFixed NativeTy
IT16) (NativeTy -> IntTy
ITFixed NativeTy
IT8)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 & 0xFF"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> IntTy -> PrimFn
LTrunc (NativeTy -> IntTy
ITFixed NativeTy
IT32) (NativeTy -> IntTy
ITFixed NativeTy
IT8)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 & 0xFF"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> IntTy -> PrimFn
LTrunc (NativeTy -> IntTy
ITFixed NativeTy
IT64) (NativeTy -> IntTy
ITFixed NativeTy
IT8)) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0.intValue() & 0xFF"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> IntTy -> PrimFn
LTrunc (NativeTy -> IntTy
ITFixed NativeTy
IT32) (NativeTy -> IntTy
ITFixed NativeTy
IT16)) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0 & 0xFFFF"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> IntTy -> PrimFn
LTrunc (NativeTy -> IntTy
ITFixed NativeTy
IT64) (NativeTy -> IntTy
ITFixed NativeTy
IT16)) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0.intValue() & 0xFFFF"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> IntTy -> PrimFn
LTrunc (NativeTy -> IntTy
ITFixed NativeTy
IT64) (NativeTy -> IntTy
ITFixed NativeTy
IT32)) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0.intValue() & 0xFFFFFFFF"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item PrimFn
LStrConcat Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
"+"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item PrimFn
LStrLt Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
"<"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item PrimFn
LStrEq Bool
False JsPrimTy
PTBool (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
binop Text
"=="
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item PrimFn
LStrLen Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0.length"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LIntFloat IntTy
ITNative) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ PrimF
forall a. HasCallStack => [a] -> a
head
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LIntFloat IntTy
ITBig) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0.intValue()"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LFloatInt IntTy
ITNative) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0|0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LFloatInt IntTy
ITBig) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"new $JSRTS.jsbn.BigInteger(Math.trunc(%0)+ '')"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LIntStr IntTy
ITNative) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"''+%0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LIntStr IntTy
ITBig) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0.toString()"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LStrInt IntTy
ITNative) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"parseInt(%0)|0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LStrInt IntTy
ITBig) Bool
True JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"new $JSRTS.jsbn.BigInteger(%0)"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (PrimFn
LFloatStr) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"''+%0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (PrimFn
LStrFloat) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
jsAppN Text
"parseFloat"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LChInt IntTy
ITNative) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0.charCodeAt(0)|0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item (IntTy -> PrimFn
LIntCh IntTy
ITNative) Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
jsAppN Text
"String.fromCharCode"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item PrimFn
LFExp Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
jsAppN Text
"Math.exp"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item PrimFn
LFLog Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
jsAppN Text
"Math.log"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item PrimFn
LFSin Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
jsAppN Text
"Math.sin"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item PrimFn
LFCos Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
jsAppN Text
"Math.cos"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item PrimFn
LFTan Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
jsAppN Text
"Math.tan"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item PrimFn
LFASin Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
jsAppN Text
"Math.asin"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item PrimFn
LFACos Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
jsAppN Text
"Math.acos"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item PrimFn
LFATan Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
jsAppN Text
"Math.atan"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item PrimFn
LFATan2 Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
jsAppN Text
"Math.atan2"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item PrimFn
LFSqrt Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
jsAppN Text
"Math.sqrt"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item PrimFn
LFFloor Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
jsAppN Text
"Math.floor"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item PrimFn
LFCeil Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
jsAppN Text
"Math.ceil"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item PrimFn
LFNegate Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"-%0"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item PrimFn
LStrHead Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ \[JsExpr
x] -> JsExpr -> JsExpr -> JsExpr
JsArrayProj (Int -> JsExpr
JsInt Int
0) JsExpr
x
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item PrimFn
LStrTail Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ \[JsExpr
x] -> JsExpr -> Text -> PrimF
JsMethod JsExpr
x Text
"slice" [Int -> JsExpr
JsInt Int
1]
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item PrimFn
LStrCons Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0+%1"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item PrimFn
LStrIndex Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ \[JsExpr
x, JsExpr
y] -> JsExpr -> JsExpr -> JsExpr
JsArrayProj JsExpr
y JsExpr
x
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item PrimFn
LStrRev Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"%0.split('').reverse().join('')"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item PrimFn
LStrSubstr Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ Text -> PrimF
JsForeign Text
"$JSRTS.prim_strSubstr(%0, %1, %2)"
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item PrimFn
LSystemInfo Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ JsExpr -> PrimF
JsApp (JsExpr -> Text -> JsExpr
JsProp (Text -> JsExpr
JsVar Text
"$JSRTS") Text
"prim_systemInfo")
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item PrimFn
LCrash Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ \[JsExpr
l] -> JsExpr -> JsExpr
JsErrorExp JsExpr
l
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item PrimFn
LReadStr Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ \[JsExpr
_] -> JsExpr -> PrimF
JsApp (JsExpr -> Text -> JsExpr
JsProp (Text -> JsExpr
JsVar Text
"$JSRTS") Text
"prim_readStr") []
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item PrimFn
LWriteStr Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ \[JsExpr
_, JsExpr
str] -> JsExpr -> PrimF
JsApp (JsExpr -> Text -> JsExpr
JsProp (Text -> JsExpr
JsVar Text
"$JSRTS") Text
"prim_writeStr") [JsExpr
str]
, PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item PrimFn
LNoOp Bool
False JsPrimTy
PTAny (PrimF -> (PrimFn, PrimDec)) -> PrimF -> (PrimFn, PrimDec)
forall a b. (a -> b) -> a -> b
$ PrimF
forall a. HasCallStack => [a] -> a
head
]
where
item :: PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item :: PrimFn -> Bool -> JsPrimTy -> PrimF -> (PrimFn, PrimDec)
item PrimFn
fn Bool
ubi JsPrimTy
pty PrimF
c = (PrimFn
fn, (Bool
ubi, JsPrimTy
pty, PrimF
c))
binop :: Text -> PrimF
binop Text
op [JsExpr
l, JsExpr
r] = Text -> JsExpr -> JsExpr -> JsExpr
JsBinOp Text
op JsExpr
l JsExpr
r
method :: Text -> PrimF
method Text
op (JsExpr
l:[JsExpr]
r) = JsExpr -> Text -> PrimF
JsMethod JsExpr
l Text
op [JsExpr]
r
jsB2I :: JsExpr -> JsExpr
jsB2I :: JsExpr -> JsExpr
jsB2I JsExpr
x = Text -> PrimF
JsForeign Text
"%0 ? 1|0 : 0|0" [JsExpr
x]
jsPrimCoerce :: JsPrimTy -> JsPrimTy -> JsExpr -> JsExpr
jsPrimCoerce :: JsPrimTy -> JsPrimTy -> JsExpr -> JsExpr
jsPrimCoerce JsPrimTy
PTBool JsPrimTy
PTAny JsExpr
x = JsExpr -> JsExpr
jsB2I JsExpr
x
jsPrimCoerce JsPrimTy
_ JsPrimTy
_ JsExpr
x = JsExpr
x