Table of Contents
1 Proste programy
- Napisać program
dzieńdobry
, który wydrukuje napis "Dzień dobry!".- skompilować
- uruchomić
Napisać program
suma
, który przeczyta dwie liczby ze standarsowego wejścia, umieszczone, w dwóch kolejnych liniach. Następnie program ma te liczby dodać i wydrukować wynik.Maksymalnie uprościć program, próbując zapisać go oszczędniej, jeśli chodzi o złożoność wykorzystywanych narzędzi/technik programistycznych. Funktor jest prostszy niż funktor aplikatywny, funktor aplikatywny jest prostszy niż monada.
fmap succ [1,2], czy ~~succ <$> [1,2]
jest prostsze od[succ] <*> [1,2]
succ <$> [1,2]
jest prostsze odpure succ <*> [1,2]
fmap succ [1,2]
jest prostsze ofliftA succ [1,2]
fmap read getLine
jest prostsze ofgetLine >>= return . read
- Napisać program, który przeczyta plik tekstowy ze standardowego wejścia i wypisze liczbę linii pliku. (funkcja getContents)
2 Rozwiązania
readInt = read <$> getLine main = (+) <$> readInt <*> readInt >>= print
main = (+) <$> readInt <*> readInt >>= print where readInt = read <$> getLine
import Control.Applicative (liftA2) readInt = fmap read getLine main = liftA2 (+) readInt readInt >>= print
import Control.Applicative (liftA2) main = liftA2 (+) readInt readInt >>= print where readInt = fmap read getLine