Changeset 10356 for src/Pugs/Prim/List.hs
- Timestamp:
- 05/15/06 21:26:00 (3 years ago)
- Files:
-
- 1 modified
-
src/Pugs/Prim/List.hs (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/Prim/List.hs
r10315 r10356 156 156 if cond then return . VBool $ cond else elemByM eq y xs 157 157 158 op2ReduceL :: Val -> Val -> Eval Val159 op2ReduceL sub@(VCode _) list = op2ReduceLlist sub160 op2ReduceL list sub = do158 op2ReduceL :: Bool -> Val -> Val -> Eval Val 159 op2ReduceL keep sub@(VCode _) list = op2ReduceL keep list sub 160 op2ReduceL keep list sub = do 161 161 code <- fromVal sub 162 op2Reduce list $ VCode code{ subAssoc = "left" }163 164 op2Reduce :: Val -> Val -> Eval Val165 op2Reduce sub@(VCode _) list = op2Reducelist sub166 op2Reduce list sub = do162 op2Reduce keep list $ VCode code{ subAssoc = "left" } 163 164 op2Reduce :: Bool -> Val -> Val -> Eval Val 165 op2Reduce keep sub@(VCode _) list = op2Reduce keep list sub 166 op2Reduce keep list sub = do 167 167 code <- fromVal sub 168 168 args <- fromVal list 169 169 -- cxt <- asks envContext 170 let (reduceM, reduceMn) = (foldM, foldMn) -- getReduceFuncs cxt170 let (reduceM, reduceMn) = if keep then (scanM, scanMn) else (foldM, foldMn) 171 171 let arity = length $ subParams code 172 172 if arity < 2 then fail "Cannot reduce() using a unary or nullary function." else do … … 215 215 rest <- fromVal =<< scanM f fqx xs 216 216 return $ VList (q:rest) 217 getReduceFuncs cxt = case cxt of218 CxtSlurpy _ -> (scanM, scanMn)219 _ -> (foldM, foldMn)220 217 221 218 op2Grep :: Val -> Val -> Eval Val
