Table of Contents

1 Proste programy

  1. Napisać program dzieńdobry, który wydrukuje napis "Dzień dobry!".
    • skompilować
    • uruchomić
  2. 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 od pure succ <*> [1,2]

    fmap succ [1,2] jest prostsze of liftA succ [1,2]

    fmap read getLine jest prostsze of getLine >>= return . read

  3. 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

Author: to

Created: 2019-04-26 pią 14:56

Validate