λ> take 10 ones [1,1,1,1,1,1,1,1,1,1] λ> (const 1) 2 1 λ> replicate 1 10 [10] λ> replicate 10 1 [1,1,1,1,1,1,1,1,1,1] λ> take 20 (cycle [1,2,3]) [1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2] λ> take 20 (cycle [0..]) [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19] λ> take 20 [0..] [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19] λ> repeated (*2) 3 5 40 λ> take 10 (iterate (*2) 5) [5,10,20,40,80,160,320,640,1280,2560] λ> repeated (*2) 3 5 40 λ> take 10 pairs [(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(0,6),(0,7),(0,8),(0,9)] λ> take 10 pairs [(0,0),(0,1),(1,0),(0,2),(1,1),(2,0),(0,3),(1,2),(2,1),(3,0)] λ> take 10 pairs [(0,0)Interrupted. λ> map (+3) [1..5] [4,5,6,7,8] λ> map (+3) [1..10] [4,5,6,7,8,9,10,11,12,13] λ> take 10 (map (+3) [5..]) [8,9,10,11,12,13,14,15,16,17] λ> take 10 triplets [[3,2,1],[6,5,4],[9,8,7],[12,11,10],[15,14,13],[18,17,16],[21,20,19],[24,23,22],[27,26,25],[30,29,28]] λ> take 10 (foldr (++) [] triplets) [3,2,1,6,5,4,9,8,7,12] λ> take 100 (foldr (++) [] triplets) [3,2,1,6,5,4,9,8,7,12,11,10,15,14,13,18,17,16,21,20,19,24,23,22,27,26,25,30,29,28,33,32,31,36,35,34,39,38,37,42,41,40,45,44,43,48,47,46,51,50,49,54,53,52,57,56,55,60,59,58,63,62,61,66,65,64,69,68,67,72,71,70,75,74,73,78,77,76,81,80,79,84,83,82,87,86,85,90,89,88,93,92,91,96,95,94,99,98,97,102] λ> take 100 (foldl (++) [] triplets) Interrupted. λ> :t ($) ($) :: (a -> b) -> a -> b λ> take 100 $ foldl (++) [] triplets Interrupted. λ> take 100 $ foldr (++) [] triplets [3,2,1,6,5,4,9,8,7,12,11,10,15,14,13,18,17,16,21,20,19,24,23,22,27,26,25,30,29,28,33,32,31,36,35,34,39,38,37,42,41,40,45,44,43,48,47,46,51,50,49,54,53,52,57,56,55,60,59,58,63,62,61,66,65,64,69,68,67,72,71,70,75,74,73,78,77,76,81,80,79,84,83,82,87,86,85,90,89,88,93,92,91,96,95,94,99,98,97,102] λ> replicate 10 1 [1,1,1,1,1,1,1,1,1,1] λ> repeated 3 (*2) 5 40 λ> λ> f 0 Interrupted. λ> second (10^10^10) 2 2 λ> f 0 λ> f 0 [1 of 1] Compiling Lazy ( /home/trifon/fmisync/Courses/2021_22/FP_2021_22/sandbox/lectures/haskell/Lazy.hs, interpreted ) Ok, modules loaded: Lazy. λ> f 0 Interrupted. λ> head $! [1..100000] 1 λ> head $! [1..1000000] 1 λ> head $! [1..10000000] 1 λ> head $! [1..100000000] 1 λ> head $! [1..1000000000] 1 λ> head $! [1..10000000000] 1 λ> head $! [1..100000000000] 1 λ> maxBound::Int 9223372036854775807 λ> maxBound::Char '\1114111' λ> maxBound::Bool True λ> show 1 "1" λ> show True "True" λ> show [1..5] "[1,2,3,4,5]" λ>