egison 3.3.16 → 3.3.17
raw patch · 3 files changed
+16/−6 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- egison.cabal +2/−2
- hs-src/Language/Egison/Core.hs +4/−4
- lib/core/string.egi +10/−0
egison.cabal view
@@ -1,5 +1,5 @@ Name: egison-Version: 3.3.16+Version: 3.3.17 Synopsis: Programming language with non-linear pattern-matching against unfree data Description: An interpreter for Egison, the programming langugage that realized non-linear pattern-matching against unfree data types.@@ -20,7 +20,7 @@ <http://www.egison.org/demonstrations/> . Egison makes programming dramatically simple.- Please help us to make Egison popular.+ Please try Egison. Homepage: http://www.egison.org License: MIT License-file: LICENSE
hs-src/Language/Egison/Core.hs view
@@ -169,7 +169,7 @@ evalExpr env (ArrayExpr exprs) = do refs' <- mapM (newObjectRef env) exprs- return . Intermediate . IArray $ Array.listArray (1, toInteger (length exprs)) refs'+ return . Intermediate . IArray $ Array.listArray (0, toInteger ((length exprs) - 1)) refs' evalExpr env (HashExpr assocs) = do let (keyExprs, exprs) = unzip assocs@@ -318,8 +318,8 @@ evalExpr env expr >>= arraySize where arraySize :: WHNFData -> EgisonM WHNFData- arraySize (Intermediate (IArray arr)) = return . Value . toEgison $ snd $ Array.bounds arr- arraySize (Value (Array arr)) = return . Value . toEgison $ snd $ Array.bounds arr+ arraySize (Intermediate (IArray arr)) = return . Value . toEgison $ (snd $ Array.bounds arr) + 1+ arraySize (Value (Array arr)) = return . Value . toEgison $ (snd $ Array.bounds arr) + 1 arraySize val = throwError $ TypeMismatch "array" val evalExpr _ SomethingExpr = return $ Value Something@@ -390,7 +390,7 @@ generateArray env name sizeExpr expr = do size <- evalExpr env sizeExpr >>= fromWHNF >>= return . fromInteger elems <- mapM genElem (enumFromTo 1 size)- return $ Intermediate $ IArray $ Array.listArray (1, size) elems+ return $ Intermediate $ IArray $ Array.listArray (0, size - 1) elems where genElem :: Integer -> EgisonM ObjectRef genElem i = do env' <- bindEnv env name $ toInteger i
lib/core/string.egi view
@@ -49,6 +49,16 @@ (lambda [$xs] (eq? xs ""))) +(define $S.car+ (lambda [$xs]+ (match xs string+ {[<cons $x _> x]})))++(define $S.cdr+ (lambda [$xs]+ (match xs string+ {[<cons _ $r> r]})))+ (define $S.map (lambda [$f $xs] (pack (map f (unpack xs)))))