packages feed

egison 3.5.5 → 3.5.6

raw patch · 4 files changed

+28/−12 lines, 4 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

egison.cabal view
@@ -1,5 +1,5 @@ Name:                egison-Version:             3.5.5+Version:             3.5.6 Synopsis:            Programming language with non-linear pattern-matching against unfree data Description:   An interpreter for Egison, a **pattern-matching-oriented**, purely functional programming language.
hs-src/Language/Egison/Primitives.hs view
@@ -22,6 +22,7 @@  import qualified Data.Sequence as Sq +import Data.Char (ord, chr) import qualified Data.Text as T import qualified Data.Text.IO as T @@ -141,6 +142,8 @@                              , ("itof", integerToFloat)              , ("rtof", rationalToFloat)+             , ("ctoi", charToInteger)+             , ("itoc", integerToChar)               , ("pack", pack)              , ("unpack", unpack)@@ -378,6 +381,18 @@     Integer i -> return $ Float $ fromInteger i     Rational r -> return $ Float $ fromRational r     _ -> throwError $ TypeMismatch "integer of rational number" (Value val)++charToInteger :: PrimitiveFunc+charToInteger = oneArg $ \val -> do+  case val of+    Char c -> return $ Integer $ fromIntegral $ ord c+    _ -> throwError $ TypeMismatch "character" (Value val)++integerToChar :: PrimitiveFunc+integerToChar = oneArg $ \val -> do+  case val of+    Integer i -> return $ Char $ chr $ fromIntegral i+    _ -> throwError $ TypeMismatch "character" (Value val)  floatToIntegerOp :: (Double -> Integer) -> PrimitiveFunc floatToIntegerOp op = oneArg $ \val -> do
lib/core/number.egi view
@@ -124,9 +124,6 @@ ;;; ;;; Decimal Fractions ;;;-(define $decimal (algebraic-data-matcher {<df integer (list integer)>}))-(define $decimal' (algebraic-data-matcher {<df' integer (list integer) (list integer)>}))- (define $rtod-helper   (lambda [$m $n]     (let {[$q (quotient (* m 10) n)]@@ -134,12 +131,12 @@       {[q r] @(rtod-helper r n)})))  (define $rtod-  (lambda [$x]+  (lambda [$c $x]     (let* {[$m (numerator x)]            [$n (denominator x)]            [$q (quotient m n)]            [$r (remainder m n)]}-      <Df q (map fst (rtod-helper r n))>)))+      [q (take c (map fst (rtod-helper r n)))])))  (define $rtod'   (lambda [$x]@@ -148,17 +145,17 @@            [$q (quotient m n)]            [$r (remainder m n)]            [[$s $c] (find-cycle (rtod-helper r n))]}-      <Df' q (map fst s) (map fst c)>)))+      [q (map fst s) (map fst c)])))  (define $show-decimal-  (lambda [$n $x]-    (match (rtod x) decimal-      {[<df $q $sc> (foldl S.append (S.append (show q) ".") (map show (take n sc)))]})))+  (lambda [$c $x]+    (match (rtod c x) [integer (list integer)]+      {[[$q $sc] (foldl S.append (S.append (show q) ".") (map show sc))]})))  (define $show-decimal'   (lambda [$x]-    (match (rtod' x) decimal'-      {[<df' $q $s $c> (foldl S.append "" {(S.append (show q) ".") @(map show s) " " @(map show c) " ..."})]})))+    (match (rtod' x) [integer (list integer) (list integer)]+      {[[$q $s $c] (foldl S.append "" {(S.append (show q) ".") @(map show s) " " @(map show c) " ..."})]})))  ;;; ;;; Continued Fraction
lib/core/string.egi view
@@ -42,6 +42,10 @@   (lambda [$xs]     (eq? xs ""))) +(define $S.cons+  (lambda [$x $xs]+    (append-string (pack {x}) xs)))+ (define $S.car   (lambda [$xs]     (match xs string