[1..10] is Haskell notation for the list of integers between 1 and 10; and print has type Int -> IO ().) Another way to define for is this: for ns fa = sequence_ (map fa ns) Here, map applies fa to each element of ns, giving a list of actions; then sequence_ combines ...