Funktsionaalne Programmeerimine

Seotud dokumendid
Funktsionaalne Programmeerimine

Infix Operaatorid I Infix operaatorid (näiteks +) ja tüübid (näiteks ->) kirjutatakse argumentide vahele, mitte argumentide ette. Näiteks: 5 + 2, 2*pi

Failiotsing: find paljude võimalustega otsingukäsk find kataloog tingimused kataloog - otsitakse sellest kataloogist ja tema alamkataloogidest tingimu

1 / loeng Tekstitöötlus Sisend/väljund Teksti lugemine Sõnad

Operatsioonisüsteemide ehitus

PowerPointi esitlus

MTAT Operatsioonisüsteemid - Turvalisus

X Window System tuntud kui: X11 X X-Windows akendussüsteem/akendesüsteem rastergraafikat toetavatele ekraanidele UNIX-maailmas väga levinud mitmesugus

MTAT Operatsioonisüsteemid - Turvalisus

PHP

HAJUSSÜSTEEMID HAJUSSÜSTEEMID Kaugprotseduurid IDL kompileerimine ONCIDLnäide CORBAIDLnäide MIDLnäide DCERPCmuidomadusi XML-RPC JSON-RPC REST document

AWK Aho Weinberger Kernighan struktuurse teksti töötlemise keel rikkalikult tekstitöötlusvahendeid omal alal suhteliselt lihtne ja kiiresti realiseeri

Programmeerimiskeel APL Raivo Laanemets 17. mai a.

X Window System tuntud kui: X11, X, X-Windows akendussüsteem/akendesüsteem rastergraafikat toetavatele ekraanidele UNIX-maailmas väga levinud mitmesug

(loeng3-ohtlikud_koodiloigud)

Pealkiri

Võistlusülesanne Vastutuulelaev Finaal

untitled

Scala ülevaade 1 Meetodid, muutujad ja väärtused. Süntaks 2 Lihtsad tüübid ja väärtused. 3 OOP, case-klassid ja mustrisobitus. 4 Puhta Scala väärtusta

loeng2

OPERATSIOONISÜSTEEMIDE EHITUS Ülevaade Protsessi mõiste Protsesside planeerimine Operatsioonid protsessidega Protsessihaldus Protsesside koostöö Prots

SK-3MD

Andmebaasid, MTAT Andmebaasikeeled 11.loeng

Neurovõrgud. Praktikum aprill a. 1 Stohhastilised võrgud Selles praktikumis vaatleme põhilisi stohhastilisi võrke ning nende rakendust k

Print\A4\QualifyReduced.pmt

Võrguinverterite valik ja kasutusala päikeseelektrijaamades Robert Mägi insener

Vabavara programmi ACDChemSketch kasutamine struktuurivalemite koostamiseks

Andmeturve

Tootmine_ja_tootlikkus

Microsoft Word - essee_CVE ___KASVANDIK_MARKKO.docx

Programmi AnimatorDV Simple+ lühike kasutajajuhend

PowerPointi esitlus

Operatsioonisüsteemid 1. loeng

Skriptimiskeeli, mida ei käsitletud Perl Python Visual Basic Script Edition (VBScript) MS DOS/cmd skriptid Windows PowerShell midagi eksootilisemat: G

Regressioonanalüüsi kodutöö Indrek Zolk 30. mai a. 1 Andmestiku kirjeldus Käesoleva kodutöö jaoks vajalik andmestik on saadud veebiaadressilt ht

Operatsioonisüsteemide ehitus

Algoritmid ja andmestruktuurid

Pealkiri

I Generaatori mõiste (Java) 1. Variantide läbivaatamine Generaator (ehk generaator-klass) on klass, milles leidub (vähemalt) isendimeetod next(). Kons

Pythoni Turtle moodul ja Scratchi värvilisem pool Plaan Isikukoodi kontrollnumbri leidmine vaatame üle lahenduse kontrollnumbri leimiseks. Pythoni joo

UNIXi käsurida Koostanud: Indrek Zolk Dokumendi versioon: 5 Kompileerimise kuupäev: 25. september a. Tartu Kunstigümnaasium Tartu 2005

SQL

Language technology resources for Estonian text summarization Kaili Müürisep University of Tartu Institute of Computer Science

Print\A4\QualifyReduced.pmt

(Tõrked ja töökindlus \(2\))

Loeng05

Pangalingi spetsifikatsioon Pocopay pangalingilt makse algatamiseks tuleb kasutada teenust Kaupmees teeb päringu Pocopayle aadressile

TYPE_R_EIL_EE.pdf

MMFA For Laura

Praks 1

Automaatjuhtimise alused Automaatjuhtimissüsteemi kirjeldamine Loeng 2

DIGITAALTEHNIKA DIGITAALTEHNIKA Arvusüsteemid Kümnendsüsteem Kahendsüsteem Kaheksandsüsteem Kuueteistkü

Microsoft Word - 23jaan07.doc

Microsoft Word - polkaudio 2010 hinnakiri

Relatsiooniline andmebaaside teooria II. 6. Loeng

Microsoft Word - KOV_uuringu_analyys.doc

Skriptid ja käsud

OÜ Lemonsport Hummel spordivarustus Raplamaa JK õpilastele ja pereliikmetele Valik september Jalgpallikooli võistlus- ja treeningvarustus 20

Tiia Salm 2011 Online kirjastus CALAMÉO Calameo kujutab endast on-line kirjastust, mis võimaldab oma dokumente avaldada e-raamatuna tasuta. Failid (Pd

Microsoft Word - ref - Romet Piho - Tutorial D.doc

Kerala State Haj Committee HAJ 2014 Flight Manifest FLIGHT NO. SV-5731 DATE: 14/09/2014 TIME: 16:35 RETURN FLIGHT NO: SV-5764 DATE: Cov No

MTAT Loeng 11 ( )

Peafail3_2.dvi

Süsteemiintegratsioon

KUULA & KORDA INGLISE KEEL 1

Microsoft Word - Referaat.docx

Microsoft Word - Loppukilpailu2015_16_tehtavat_viro_1

Microsoft Word - Errata_Andmebaaside_projekteerimine_2013_06

IFI6083_Algoritmid_ja_andmestruktuurid_IF_3

Diskreetne matemaatika I Kevad 2019 Loengukonspekt Lektor: Valdis Laan 20. juuni a.

Microsoft Word - EVS_ISO_IEC_27001;2014_et_esilehed.doc

2015 Prizm Football;

Andmed arvuti mälus Bitid ja baidid

Slide 1

6

Sissejuhatus Informaatikasse Margus Niitsoo

Praks 1

Mining Meaningful Patterns

TARTU ÜLIKOOL Arvutiteaduse instituut Informaatika õppekava Mirjam Iher Nõrgima eeltingimuse staatiline analüüs pinukeeltele Bakalaureusetöö (9 EAP) J

Word Pro - diskmatTUND.lwp

EIK-OSadmin-Edmund

PowerPoint Presentation

MOOCi „Programmeerimise alused“ ülesannete lahenduste analüüs

MTAT Operatsioonisüsteemid - protsessid

DE_loeng5

Jaehinnakiri_2016.xls

SISSEJUHATUS HAJUSARVUTUSSE KASUTADES PYTHONIT Joonas Puura SISUKORD Sissejuhatus... 2 Ligipääs Rocket klastrile... 2 Windows... 2 Linux... 4 Vajaliku

Tööplaan 9. kl õpik

ArcGIS rakendused välitöödeks Raido Valdmaa AlphaGIS

Väljavõte:

Kõrvalefektid ja Haskell Kõik senised programmid on olnud ilma kõrvalefektideta; so. puhtalt funktsionaalsed. Programmi täitmise ainsaks efektiks on tema väartus. Osade ülesannete jaoks on kõrvalefektid vajalikud reaalse maailamga suhtlemine sisend/väljund efektiivsed imperatiivsed algoritmid Haskellis on puhtad väärtused eristatud reaalsetest tegevustest kahel viisil: Kõrvalefektidega avaldised on spetsiaalset tüüpi Erisüntaks efektide järjestamiseks ja täitmiseks VARMO VENE 1

Käsud ja aktsioonid Haskellis on igal avaldisel mingi tüüp ja tema väärtsutamisel on tulemuseks sama tüüpi väärtus. Avaldist, mille väärtsutamisel lisaks puhtale väärtusele võib tekkida kõrvalefekt, nimetame käsuks (command). Käsk, mille puhas väärtus on tüüpi a, on ise abstraktset tüüpi IO a, mille väärtusi kutsume aktsioonideks. Aktsioone on võimalik täita süsteemi poolt, mille tulemusena toimub vastav kõrvalefekt. Terviklik Haskell-programm on aktsioon tüüpi IO () VARMO VENE 2

Tühikäsk : return :: a -> IO a Primitiivsed käsud Standard-väljundisse kirjutamine: putchar :: Char -> IO () putstr :: String -> IO () print :: Show a => a -> IO () Näide: Prelude> putstr "Hello, World!" Hello, World! Prelude> VARMO VENE 3

Eeldefineeritud IO operatsioonid Standard-sisendist lugemine: getchar getline getcontents :: IO Char :: IO String :: IO String Tekstifailide lugemine / kirjutamine: type FilePath = String readfile :: FilePath -> IO String writefile :: FilePath -> String -> IO () appendfile :: FilePath -> String -> IO () VARMO VENE 4

module Directory IO teegid createdirectory :: FilePath -> IO () removedirectory :: FilePath -> IO () removefile :: FilePath -> IO () renamedirectory :: FilePath -> FilePath -> IO () renamefile :: FilePath -> FilePath -> IO () getdirectorycontents :: FilePath -> IO [FilePath] module System getargs getprogname getenv :: IO [String] :: IO String :: String -> IO String VARMO VENE 5

do-süntaks: Näide: Käskude kombineerimine expr = do {stmt;...; stmt} stmt = pat <- expr expr let decls getword :: IO String getword = do c <- getchar if isspace c then return "" else do w <- getword return (c:w) VARMO VENE 6

Tekstifailide töötlemine Kopeerida tekst standardsisendist standardväljundisse #!/usr/local/bin/runhugs module Main(main) where main :: IO () main = do input <- getcontents putstr input Näide: $ echo Lühike tekst cat1 Lühike tekst $ VARMO VENE 7

Tekstifailide töötlemine Kopeerida tekstifailid standardväljundisse import System (getargs) main :: IO () main = do args <- getargs if null args then catfiles ["-"] else catfiles args VARMO VENE 8

Tekstifailide töötlemine Kopeerida tekstifailid standardväljundisse (järg) catfiles :: [String] -> IO () catfiles [] = return () catfiles ("-":xs) = do input <- getcontents putstr input catfiles xs catfiles (x:xs) = do contents <- readfile x putstr contents catfiles xs VARMO VENE 9

Veatöötlemise käsud: IO vigade töötlus ioerror :: IOError -> IO a usererror :: String -> IOError catch :: IO a -> (IOError -> IO a) -> IO a Veatöötlusega cat catfiles (x:xs) = do cont <- catch (readfile x) (\_ -> return (msg ++ x ++ "\n")) putstr cont catfiles xs where msg = "ERROR reading file: " VARMO VENE 10

Mitterekursiivne cat Tekstifailide töötlemine catfiles :: [String] -> IO () catfiles xs = sequence_ [ catfile x x <- xs] catfile :: String -> IO () catfile "-" = do input <- getcontents putstr input catfile x = do cont <- catch (readfile x) (\_ -> return (msg ++ x ++ "\n")) putstr cont where msg = "ERROR reading file: " VARMO VENE 11

Unixi wc Tekstifailide töötlemine wcfiles :: [String] -> IO () wcfiles xs = sequence_ (map wcfile xs) wcfile :: String -> IO () wcfile x = do cont <- getfilecontents putstr (lwccount x cont) where getfilecontents x == "-" = getcontents otherwise = readfile x VARMO VENE 12

Unixi wc (järg) Tekstifailide töötlemine lwccount :: String -> String -> String lwccount fname cont = format lc ++ format wc ++ format cc ++ " " ++ fname ++ " \n" where ls = lines cont lc = length ls wc = sum (map (length. words) ls) cc = length cont format x = rjustify 8 (show x) VARMO VENE 13

Graafiline Hello, World Lihtne graafika import SOEGraphics main = rungraphics ( do w <- openwindow "My First Graphics Program" (300,300) drawinwindow w (text (100,200) "Hello Graphics World") k <- getkey w closewindow w ) VARMO VENE 14

Graafika käske: Lihtne graafika type Title = String type Size = (Int,Int) type Point = (Int,Int) rungraphics :: IO () -> IO () openwindow :: Title -> Size -> IO Window drawinwindow :: Window -> Graphic -> IO () text :: Point -> String -> Graphic getkey :: Window -> IO Char closewindow :: Window -> IO () VARMO VENE 15

Lihtne graafika Graafiliste objektide joonistamise käske: ellipse line polyline polygon :: Point -> Point -> Graphic :: Point -> Point -> Graphic :: [Point] -> Graphic :: [Point] -> Graphic Graafiliste objektide värvimine : data Color = Black Blue Green Cyan Red Magenta Yellow White withcolor :: Color -> Graphic -> Graphic VARMO VENE 16

Näide: Lihtne graafika pic1 = withcolor Red (ellipse (150,150) (300,200)) pic2 = withcolor Blue (polyline [(100,50),(200,50), (200,250),(100,250),(100,50)]) main2 = rungraphics $ do w <- openwindow "Some Graphics Figures" (300,300) drawinwindow w pic1 drawinwindow w pic2 spaceclose w VARMO VENE 17