На этом шаге мы перечислим эти функции.
Файлы указываются с помощью строк, содержащих имена файлов.
1. Функция, записывающая строку <Строка> в файл с именем <Имя_файла>:
writeFile:: FilePath -> String -> IO() writeFile <Имя_файла> <Строка>
2. Функция, добавляет строку <Строка> в конец файла с именем <Имя_файла>:
appendFile:: FilePath -> String -> IO () appendFile <Имя_файла> <Строка>
3. Функция, возвращающая содержимое файла с именем <Имя_файла> в виде строки <Строка>:
readFile:: FilePath -> IO String readFile <Имя_файла> <Строка>
Отметим, что функции writeFile и appendFile записывают литеральную строку в файл. Для того, чтобы записать в файл значение любого, пригодного для печати типа, как в функции print, вначале используется функция show для преобразования значения в строку.
В заключение приведем пример, иллюстрирующий использование перечисленных в трех последних шагах, функций.
-- Демонстрация возможности использование побочного -- эффекта, связанного с необходимостью вывода ре- -- зультата на экран или в файл ------------------------------- main1 = putStr "Привет, мир!\n" -------------------------------------------------------- -- Функция, выводящая на экран дисплея натуральные числа -- 1,2,...,10 вместе с их квадратами ------------------------------------------------- main2 = putStrLn (show ([(n,2^n)| n <- [1..10]])) main3 = putStr (show ([(n,2^n)| n <- [1..10]])) main4 = print ([(n,2^n)| n <- [1..10]]) ---------------------------------------------- -- Функция удаляет из строки x все символы, не -- являющиеся прописными латинскими буквами ------------------------------------------- main5:: [Char] -> IO() main5 x = print (filter isUpper x) -------------------------------------------------- -- Предикат, устанавливающий чётность целого числа -------------------------------------------------- odd':: Int -> IO() odd' x = if x `rem` 2==0 then putStrLn "Even" else putStrLn "Odd" ------------------------------ main6 = appendFile "Input" (show [(x,x*x) | x <- [0,0.5..2]]) main7 = writeFile "Input" (show (2^10)++"\n"++show (2^20))
На следующем шаге мы рассмотрим функции организации последовательностей функций ввода-вывода.