Changeset 15460 for src/Pugs/Prim/Keyed.hs
- Timestamp:
- 03/05/07 11:47:16 (21 months ago)
- Files:
-
- 1 modified
-
src/Pugs/Prim/Keyed.hs (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/Prim/Keyed.hs
r15450 r15460 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 = err pairsFromValv25 pairsFromVal v = fallback v 26 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 _ v = retError "Not a keyed value" v 27 fallback :: Val -> Eval b 28 fallback = fix err 29 where 30 err :: (Val -> Eval b) -> Val -> Eval b 31 err f v@(VV vv) = do 32 val <- vvToVal vv 33 case val of 34 VV{} -> retError "Not a keyed object" v 35 _ -> f val 36 err _ v = retError "Not a keyed value" v 34 37 35 38 keysFromVal :: Val -> Eval Val … … 42 45 vals <- keysFromRef ref 43 46 return $ VList vals 44 keysFromVal v = err keysFromValv47 keysFromVal v = fallback v 45 48 46 49 valuesFromVal :: Val -> Eval Val … … 54 57 pairs <- hash_fetch sv 55 58 return . VList $ Map.elems pairs 56 valuesFromVal v = err valuesFromValv59 valuesFromVal v = fallback v 57 60 58 61 -- XXX These bulks of code below screams for refactoring
