Напишите следующие программы на функциональном языке программирования haskell:
1). Программа, считывающая два числа и возвращающая их сумму.
2). Программа, которая принимает в командной строке имя файла и распечатывает его на экране
3). Программа, принимающая в командной строке число n и имя файла и выводящая на экран первые n строк файла.
Решения:
1).
import IO
sumInt :: IO Integer
sumInt =
let readNum :: IO Integer
readNum = readLn
in do putStr "Enter number Integer: "
x1 <- readNum
putStr "Enter 2 chislo: "
x2 sumInt
Результат:sumInt :: IO Integer
sumInt =
let readNum :: IO Integer
readNum = readLn
in do putStr "Enter number Integer: "
x1 <- readNum
putStr "Enter 2 chislo: "
x2 sumInt
Enter number Integer: 1
Enter 2 chislo: 23
This summ = 24 :: IO Integer
Enter 2 chislo: 23
This summ = 24 :: IO Integer
2).
import IO
printFile = do putStr "adres Faila kakov: "
name <- getLine
fromHandle <- openFile name ReadMode
contents <- hGetContents fromHandle
hPutStr stdout contents
Результат:printFile = do putStr "adres Faila kakov: "
name <- getLine
fromHandle <- openFile name ReadMode
contents <- hGetContents fromHandle
hPutStr stdout contents
Main> printFile
adres Faila kakov: nouhau.hs
import IO
adres Faila kakov: nouhau.hs
import IO
printFile = do putStr "adres Faila kakov: "
name <- getLine
fromHandle <- openFile name ReadMode
contents <- hGetContents fromHandle
hPutStr stdout contents
:: IO ()
adres Faila kakov: nouhau.hs
import IO
adres Faila kakov: nouhau.hs
import IO
printFile = do putStr "adres Faila kakov: "
name <- getLine
fromHandle <- openFile name ReadMode
contents <- hGetContents fromHandle
hPutStr stdout contents
:: IO ()
3).
import IO
printStrInFile =
let readNum :: IO Integer
readNum = readLn
nStr _ [] = []
nStr 0 ss = []
nStr n (s:ss) = s:nStr (n - 1) ss
in do putStr "Ykajite fail: "
name <- getLine
putStr "Chislo strok: "
n <- readNum
fromHandle <- openFile name ReadMode
contents <- hGetContents fromHandle
hPutStr stdout (unlines (nStr n (lines contents)))
Результат:printStrInFile =
let readNum :: IO Integer
readNum = readLn
nStr _ [] = []
nStr 0 ss = []
nStr n (s:ss) = s:nStr (n - 1) ss
in do putStr "Ykajite fail: "
name <- getLine
putStr "Chislo strok: "
n <- readNum
fromHandle <- openFile name ReadMode
contents <- hGetContents fromHandle
hPutStr stdout (unlines (nStr n (lines contents)))
Main> printStrInFile
Ykajite fail: lab6.hs
Chislo strok: 4
import IO
printStrInFile =
let readNum :: IO Integer
:: IO ()
Ykajite fail: lab6.hs
Chislo strok: 4
import IO
printStrInFile =
let readNum :: IO Integer
:: IO ()
Если вам нравится то, что мы пишем, пожалуйста, нажмите на интересующую вас рекламу сбоку, сверху, или сразу после статьи. Будет стимул писать лучше и чаще. Хорошего вам дня.