From 628c2ae9c6e81a105a27a6804c0a9c8487053912 Mon Sep 17 00:00:00 2001 From: Krasimir Angelov Date: Tue, 15 Sep 2026 09:11:58 +0200 Subject: [PATCH] for backwards compatibility provide both (mk/un)Int and (mk/un)Integer --- src/runtime/haskell/PGF2.hsc | 1 + src/runtime/haskell/PGF2/Expr.hs | 24 ++++++++++++++++++------ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/runtime/haskell/PGF2.hsc b/src/runtime/haskell/PGF2.hsc index 5444b1c8f..3e4b814a2 100644 --- a/src/runtime/haskell/PGF2.hsc +++ b/src/runtime/haskell/PGF2.hsc @@ -38,6 +38,7 @@ module PGF2 (-- * PGF mkVar, unVar, mkStr, unStr, mkInt, unInt, + mkInteger,unInteger, mkDouble, unDouble, mkFloat, unFloat, mkMeta, unMeta, diff --git a/src/runtime/haskell/PGF2/Expr.hs b/src/runtime/haskell/PGF2/Expr.hs index 23864aac5..04bef9d1b 100644 --- a/src/runtime/haskell/PGF2/Expr.hs +++ b/src/runtime/haskell/PGF2/Expr.hs @@ -9,6 +9,7 @@ module PGF2.Expr(Var, Cat, Fun, mkVar, unVar, mkStr, unStr, mkInt, unInt, + mkInteger,unInteger, mkDouble, unDouble, mkFloat, unFloat, mkMeta, unMeta, @@ -133,17 +134,28 @@ unStr (ETyped e ty) = unStr e unStr (EImplArg e) = unStr e unStr _ = Nothing --- | Constructs an expression from integer literal -mkInt :: Integer -> Expr -mkInt i = ELit (LInt i) +-- | Constructs an expression from an int literal +mkInt :: Int -> Expr +mkInt i = ELit (LInt (fromIntegral i)) --- | Decomposes an expression into integer literal -unInt :: Expr -> Maybe Integer -unInt (ELit (LInt i)) = Just i +-- | Decomposes an expression into an int literal +unInt :: Expr -> Maybe Int +unInt (ELit (LInt i)) = Just (fromIntegral i) unInt (ETyped e ty) = unInt e unInt (EImplArg e) = unInt e unInt _ = Nothing +-- | Constructs an expression from integer literal +mkInteger :: Integer -> Expr +mkInteger i = ELit (LInt i) + +-- | Decomposes an expression into integer literal +unInteger :: Expr -> Maybe Integer +unInteger (ELit (LInt i)) = Just i +unInteger (ETyped e ty) = unInteger e +unInteger (EImplArg e) = unInteger e +unInteger _ = Nothing + -- | Constructs an expression from real number literal mkDouble :: Double -> Expr mkDouble f = ELit (LFlt f)