lib: make applyN more robust (#852)
This commit is contained in:
		
							parent
							
								
									d9d94e2cf6
								
							
						
					
					
						commit
						eb6baac6e7
					
				| @ -129,9 +129,12 @@ isLeft _        = False | ||||
| isRight :: Either a b -> Bool | ||||
| isRight = not . isLeft | ||||
| 
 | ||||
| -- | Apply a function the specified number of times. Possibly uses O(n) stack ? | ||||
| -- | Apply a function the specified number of times, | ||||
| -- which should be > 0 (otherwise does nothing). | ||||
| -- Possibly uses O(n) stack ? | ||||
| applyN :: Int -> (a -> a) -> a -> a | ||||
| applyN n f = (!! n) . iterate f | ||||
| applyN n f | n < 1     = id | ||||
|            | otherwise = (!! n) . iterate f | ||||
| -- from protolude, compare | ||||
| -- applyN :: Int -> (a -> a) -> a -> a | ||||
| -- applyN n f = X.foldr (.) identity (X.replicate n f) | ||||
| @ -218,4 +221,4 @@ mapM' f = sequence' . map f | ||||
| tests_Hledger_Utils :: Test | ||||
| tests_Hledger_Utils = TestList [ | ||||
|     tests_Hledger_Utils_Text | ||||
|     ] | ||||
|     ] | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user