Changeset 14466 for src/Pugs/Prim.hs
- Timestamp:
- 10/22/06 01:37:43 (2 years ago)
- Files:
-
- 1 modified
-
src/Pugs/Prim.hs (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/Prim.hs
r14381 r14466 22 22 -- used Pugs.Eval 23 23 op1Return, op1Yield, 24 foldParam, op2Hyper, op1HyperPrefix, op1HyperPostfix, retSeq 24 foldParam, op2Hyper, op1HyperPrefix, op1HyperPostfix, retSeq, atomicEval 25 25 ) where 26 26 import Pugs.Internals … … 156 156 op1 "sqrt" = op1Floating sqrt 157 157 op1 "atan" = op1Floating atan 158 op1 "post:++" = \x -> do 158 op1 "post:++" = \x -> atomicEval $ do 159 ref <- fromVal x 159 160 val <- fromVal x 160 ref <- fromVal x161 161 val' <- case val of 162 162 (VStr str) -> return (VStr $ strInc str) … … 169 169 op1 "post:++" mv 170 170 fromVal mv 171 op1 "post:--" = \x -> do 171 op1 "post:--" = \x -> atomicEval $ do 172 ref <- fromVal x 172 173 val <- fromVal x 173 ref <- fromVal x174 174 writeRef ref =<< op1Numeric (\x -> x - 1) val 175 175 return val … … 1551 1551 runInvokePerl5 subSV nullSV argsSV 1552 1552 1553 atomicEval :: Eval Val -> Eval Val 1554 atomicEval action = do 1555 env <- ask 1556 if envAtomic env then action else guardSTM (runEvalSTM env action) 1553 1557 1554 1558 {-| Assert that a list of Vals is all defined.
