зеркало из
				https://github.com/iharh/notes.git
				synced 2025-10-29 20:56:06 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			15 строки
		
	
	
		
			408 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			15 строки
		
	
	
		
			408 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| data Stream a = a :& Stream a
 | ||
| 
 | ||
| unfoldStream :: (b -> (a, b)) -> b -> Stream a
 | ||
| unfoldStream f = \b -> case f b of
 | ||
|   (a, b’) -> a :& unfoldStream f b’
 | ||
| 
 | ||
| iterate :: (a -> a) -> a -> Stream a
 | ||
| iterate f = unfoldStream $ \a -> (a, f a)
 | ||
| 
 | ||
| repeat :: a -> Stream a
 | ||
| repeat = unfoldStream $ \a -> (a, a)
 | ||
| 
 | ||
| zip :: Stream a -> Stream b -> Stream (a, b)
 | ||
| zip = curry $ unfoldStream $ \(a :& as, b :& bs) -> ((a, b), (as, bs))
 | 
