All pastes #745582 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-10-22 14:58 UTC
rendered paste body
main = do  -- main-funktio määrittää mitä tapahtuu kun ohjelma suoritetaan
  -- Kysytään käyttäjältä kuinka monta lukua hän aikoo syöttää
  putStrLn "Kuinka monta lukua syötät?"
  -- getLine lukee yhden syötetyn tekstirivin, "liftM read" muuntaa sen String:istä Int:iksi.
  -- (olettaen että käyttäjä syötti validin kokonaisluvun, muussa tapauksessa ohjelma kuolee)
  -- Lopuksi tulos tallennetaan "muuttujaan" n.
  n <- liftM read getLine
  -- Luodaan IO-operaatio joka pyytää käyttäjää syöttämään luvun ja lukee sitten yhden rivin inputia.
  -- Tämä operaatio toistetaan (replicate) n kertaa ja saadaan sekvenssi joka palauttaa listan kaikista
  -- riveistä jotka käyttäjä syötti. Lista tallennetaan "muuttujaan" numbers.
  numbers <- sequence (replicate n (putStr "Syötä luku: " >> getLine))
  -- Sovelletaan vanhaa tuttua read:ia numbers-listan jokaiseen elementtiin ja saadaan täten lista
  -- oikeita desimaalilukuja String:ien sijaan. Lasketaan tämän uuden listan summa (sum) ja tallennetaan
  -- se "muuttujaan" numSum.
  let numSum = sum (map read numbers)
  -- Jaetaan summa numerojen lukumäärällä n.
  -- (fromIntegral muuntaa n:än kokonaisluvusta desimaaliluvuksi jotta jako on mahdollinen)
  -- Tallennetaan tulos "muuttujaan" average.
  let average = numSum / fromIntegral n
  -- Tulostetaan syötettyjen lukujen keskiarvo.
  putStrLn ("Syötettyjen lukujen keskiarvo on: " ++ show average)