Changeset 15440 for src/Pugs/Prim/Keyed.hs
- Timestamp:
- 03/04/07 14:41:52 (21 months ago)
- Files:
-
- 1 modified
-
src/Pugs/Prim/Keyed.hs (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/Prim/Keyed.hs
r13925 r15440 9 9 existsFromRef, deleteFromRef, 10 10 ) where 11 import Pugs.Internals (forM, genericLength )11 import Pugs.Internals (forM, genericLength, fix) 12 12 import Pugs.AST 13 13 import Pugs.Types … … 23 23 return $ map (VRef . MkRef . IPair) (keys `zip` elems) 24 24 pairsFromVal (VRef ref) = pairsFromRef ref 25 pairsFromVal v = retError "Not a keyed reference" v 25 pairsFromVal v = fix err v 26 27 err :: (Val -> Eval b) -> Val -> Eval b 28 err f v@(VV vv) = do 29 val <- vvToVal vv 30 case val of 31 VV{} -> retError "Not a keyed object" v 32 _ -> f val 33 err f v = retError "Not a keyed value" v 26 34 27 35 keysFromVal :: Val -> Eval Val … … 34 42 vals <- keysFromRef ref 35 43 return $ VList vals 36 keysFromVal v = retError "Not a keyed reference"v44 keysFromVal v = fix err v 37 45 38 46 valuesFromVal :: Val -> Eval Val … … 46 54 pairs <- hash_fetch sv 47 55 return . VList $ Map.elems pairs 48 valuesFromVal v = retError "Not a keyed reference"v56 valuesFromVal v = fix err v 49 57 50 58 -- XXX These bulks of code below screams for refactoring
