egison 2.1.9 → 2.1.10
raw patch · 2 files changed
+13/−11 lines, 2 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- egison.cabal +1/−1
- hs-src/Language/Egison/Core.hs +12/−10
egison.cabal view
@@ -1,5 +1,5 @@ Name: egison-Version: 2.1.9+Version: 2.1.10 Synopsis: An Interpreter for the Programming Language Egison Description: An interpreter for the programming language Egison. A feature of Egison is the strong pattern match facility.
hs-src/Language/Egison/Core.hs view
@@ -664,16 +664,18 @@ snocDestructInnerRefs :: [InnerValRef] -> IOThrowsError (ObjectRef, ObjectRef) snocDestructInnerRefs [] = throwError $ Default "snocDestructInnerRefs: empty collection"-snocDestructInnerRefs ((IElement objRef):rest) = do- cdrObjRef <- liftIO $ newIORef $ Intermidiate $ ICollection rest- return (objRef, cdrObjRef)-snocDestructInnerRefs ((ISubCollection objRef):rest) = do- b <- isEmptyCollection objRef- if b- then snocDestructInnerRefs rest- else do (carObjRef, cdrObjRef) <- snocDestruct objRef- cdrObjRef2 <- liftIO $ newIORef $ Intermidiate $ ICollection $ (ISubCollection cdrObjRef):rest- return (carObjRef, cdrObjRef2)+snocDestructInnerRefs innerRefs =+ case reverse innerRefs of+ ((IElement objRef):rest) -> do+ cdrObjRef <- liftIO $ newIORef $ Intermidiate $ ICollection $ reverse rest+ return (objRef, cdrObjRef)+ ((ISubCollection objRef):rest) -> do+ b <- isEmptyCollection objRef+ if b+ then snocDestructInnerRefs $ reverse rest+ else do (racObjRef, rdcObjRef) <- snocDestruct objRef+ rdcObjRef2 <- liftIO $ newIORef $ Intermidiate $ ICollection $ (reverse rest) ++ [(ISubCollection rdcObjRef)]+ return (racObjRef, rdcObjRef2) snocDestructInnerVals :: [InnerVal] -> IOThrowsError (ObjectRef, ObjectRef) snocDestructInnerVals [] = throwError $ Default "snocDestructInnerVals: empty collection"