WS 2011/2012. Robert Giegerich. October 30, 2013
|
|
- Nikolas Weiner
- vor 5 Jahren
- Abrufe
Transkript
1 WS 2011/2012 Robert AG Praktische Informatik October 30, 2013
2 Algebraische Datentypen Neue Datentypen werden als algebraische Datentypen eingeführt. Werte des Datentyps sind Formeln, die aus Konstruktoren zusammengesetzt sind Konstruktoren sind Funktionen, die man deklarieren, aber nicht definieren muss. Konstruktornamen fangen mit Großbuchstaben an. Algebraische Datentypen können polymorph sein und Typ-Parameter haben. Meistens sind sie rekursiv - ein Wert kann einen Teil-Wert des gleichen Typs enthalten.
3 Beispiel 1 data Bool = True 2 False keine Typ-Parameter, nicht rekursiv, nur zwei Werte Konstruktoren sind True und False beide null-stellig (nullary (data) constructor) Funktionen nutzen pattern matching auf den Konstruktoren, z.b. der Operator &&: 1 False && y = False 2 True && y = y
4 Apropos Konstruktor Konstruktor meint immer (Daten-)Konstruktor. Einen Typnamen mit Parametern nennt man gelegentlich Typ-Konstruktor 1 data T a b =... Typ-Konstruktor T konstruiert aus Typen a und b den Typ T a b
5 Beispiel 1 data Einheit = Celsius 2 Fahrenheit 3 Kelvin Neuer Typ mit genau drei Werten. 1 data Temperatur = Temp Float Einheit (Einziger) Konstruktor Temp hat zwei Argumente, deren Typen deklariert werden. 1 data Temp = Temp Float Einheit -- erlaubt und 2 -- ueblich! Typkonstruktoren und (Daten-)Konstruktoren haben getrennte Namensräume
6 Beispiel 1 Temp 506 Kelvin :: Temperatur 1 celsius2kelvin :: Float - > Temperatur 2 celsius2kelvin t = Temp ( t ) Kelvin 3 4 kel vin2fa hrenhe it :: Float - > Temperatur 5 kel vin2fa hrenhe it t = 6 Temp (t *9/ ) Fahrenheit Das Beispiel ist inkonsequent, weil das Argument selbst nicht vom Typ Temperatur ist.
7 Beispiel Temperatur-Umrechnung: 1 conv :: Temperatur - > Einheit - > Temperatur 2 conv ( Temp t Celsius ) Celsius = 3 Temp t Celsius 4 conv ( Temp t Celsius ) Kelvin = 5 Temp ( t ) Kelvin 6 conv ( Temp t Kelvin ) Fahrenheit = 7 Temp (t *9/ ) Fahrenheit 8...
8 Algebraische Datentypen Allgemeine Form der Deklaration: data T a 1... a m = C 1 t t 1n1... C r t r1... t rnr T Typkonstruktor C i a i t ij (Daten-)Konstruktoren Typvariablen Typen oder Typvariablen
9 Beispiel: Listen Wenn man Listen noch einführen müßte... 1 data List a = Cons a ( List a) 2 Nil polymorhper Typ (Typ-Parameter a) Algebraischer Datentyp List ist rekursiv definiert eingebaute Listentyp erlaubt syntaktischen Zucker: : Cons als Infix-Operator [] Nil [] Typ-Konstruktor, etwa in [Int] Spezielle Listen-Notationen
10 Beispiel: Listen Example [1..5] = [1,2,3,4,5] = 1:2:3:4:5:[] Cons : 1 Cons 1 : 2 Cons 2 : 3 Cons 3 : 4 Cons 4 : 5 Nil 5 []
11 Elementare Funktionen auf Listen Die meisten kennen wir bereits: head, tail length sum, product enumfromto append reverse take, drop map filter concat, concatmap siehe Tafel
12 Beispiel: Maybe 1 data Maybe a = Just a 2 Nothing Konstruktor Just ist ein-stellig Typvariable a als Parameter Eine Form der Fehlerbehandlung bzw. Vorbeugung, wenn eine Funktion ein Ergebnis liefert, das nicht in jedem Fall existiert 1 > divide a b = 2 > if b == 0 then error " divide by zero " 3 > else div a b Mit Maybe: 1 > divide a b 2 > b == 0 = Nothing 3 > otherwise = Just ( div a b)
13 Beispiel: Maybe Typ von divide: 1 divide :: ( Num a) => a -> a -> Maybe a Pattern matching: 1 f a b = extract ( divide a b) where 3 extract ( Just x) = x 4 extract Nothing = 0 Was ist der Typ von extract?
14 Typsynonyme (Nachtrag zum Haskell Typsystem) Neue Typnamen durch Typsynonyme: 1 type Pair a b = (a,b) 2 type Triple a b c = (a,b,c) 3 type OrdList a = [ a] definiert neue Namen, genannt Typ-Synonyme, für bereits existieeremde Typen; hier im Beispiel für existierende Tupel-Typen und Listen. Dient ausschliesslich der Dokumentation. 1 newtype MyList a = [ a] führt ebenfalls einen NEUEN Typen analog zu [a] ein, der aber nicht als typgleich betrachtet wird. Verhindert gegenseitige Verwechslung von [a] und MyList a.
15 Derived instance declarations Optionale deriving Form: data T a 1... a m = C 1 t t 1n1... C r t r1... t rnr deriving (k 1,..., k u ) k x Typklassen für bestimmte Klassen können Instanzen automatisch erzeugt werden das heißt, alle Operationen der Klassen werden auf dem neuen Typ T automatisch implementiert. einfacher als explizite Definition, die auch möglich ist
16 ... deriving... Example 1 data Maybe a = Nothing 2 Just a 3 deriving ( Eq, Ord, Read, Show ) Damit sind Operationen wie == oder < auf dem Typ Maybe implementiert.
17 Modellierung von cis des dis es fis gis ais ges as b cis des dis es fis gis ais ges as b c d e f g a h c d e f g a h Quelle: Public Domain
18 Modellierung von 1 > module where 2 > import Ratio 3 4 > i n f i x r 7 : : 5 > i n f i x r 6 :+: 6 7 > type GanzeZahl = I n t 8 > type Bruch = Ratio I n t 9 10 > type Ton = GanzeZahl 11 > type Dauer = Bruch > data = 14 > Note Ton Dauer 15 > Pause Dauer 16 > : : h i n t e r e i n a n d e r 17 > :+: g l e i c h z e i t i g 18 > I n s t r I n s t r u m e n t 19 > Tempo GanzeZahl S c h l a e g e pro Minute 20 > d e r i v i n g Show
19 Modellierung von 22 > data Instrument = 23 > AcousticGrandPiano 24 > BrightAcousticPiano > TelephoneRing 48 > Helicopter 49 > Applause 50 > Gunshot 51 > deriving ( Show, Enum )
20 Modellierung von Sieben Ganztöne: c d e f g a h Halbtöne über den Tönen: cis dis eis (= f) fis gis ais his (=c) Halbtöne unter den Tönen: ces (=h) des es fes (=e) ges as b cis des dis es fis gis ais ges as b cis des dis es fis gis ais ges as b c d e f g a h c d e f g a h
21 Modellierung von 19 > module Helper where > import > ce, c i s, des, de, d i s, es, eh, e i s, f e s : : Ton 25 > ef, f i s, ges, ge, g i s, as, ah, a i s, be, ha, h i s : : Ton > ce = 0 ; c i s = 1 ; des = 1 28 > de = 2 ; d i s = 3 ; e s = 3 29 > eh = 4 ; e i s = 5 ; f e s = 4 30 > e f = 5 ; f i s = 6 ; ges = 6 31 > ge = 7 ; g i s = 8 ; as = 8 32 > ah = 9 ; a i s = 10 ; be = > ha = 11 ; h i s = 12
22 Formeln, die bedeuten 1 Note 0 ( 1/ 4) -- Viertelnote tiefes C 2 Note 24 (1/1) -- ganze Note c 3 Pause ( 1/ 16) -- Sechzehntelpause 4 5 Note 24 (1/4) :*: Note 26 (1/4) :*: Note 28 (1/4) 6 -- Anfang der C- Dur Tonleiter ( c 7 8 Note 24 ( 1/ 4) :+: Note 28 ( 1/ 4) :+: Note 31 ( 1/ 4) 9 -- C-Dur Akkord (c,e,g) Tempo 70 m -- m als Adagio 12 Tempo 180 m -- m als Presto 13 Instr Oboe m -- m von Oboe gespielt 14 Instr VoiceAahs m -- m gesummt
23 Abkürzungen 35 > gp, hp, vp, ap, sp :: > gp = Pause ( 1/ 1) 38 > hp = Pause ( 1/ 2) 39 > vp = Pause ( 1/ 4) 40 > ap = Pause ( 1/ 8) 41 > sp = Pause ( 1/ 16) 43 > adagio, andante, allegro, presto :: GanzeZahl > adagio = > andante = > allegro = > presto = 180
24 Abkürzungen 50 > c, d, e, f, g, a, h, c : : Dauer > > c u = Note ( ce +24) u 53 > d u = Note ( de +24) u 54 > e u = Note ( eh +24) u 55 > f u = Note ( e f +24) u 56 > g u = Note ( ge +24) u 57 > a u = Note ( ah +24) u 58 > h u = Note ( ha +24) u 59 > c u = Note ( ce +36) u
25 Zusammengesetzte Klänge 61 > cdurtonika : : > cdurtonika = c (1/1) :+: e (1/1) :+: g (1/1) > cdurskala = Tempo a l l e g r o ( 66 > c (3/8) : : d (1/8) : : e (3/8) : : f (4/8) 67 > : : g (1/8) : : a (1/4) : : h (1/8) 68 > : : c ( 1 / 2 ) ) 70 > d u r D r e i k l a n g t = Note t (1/1) :+: Note ( t +4) (1/1) 71 > :+: Note ( t +7) (1/1) > m o l l D r e i k l a n g t = Note t (1/1) :+: Note ( t +3) (1/1) 74 > :+: Note ( t +7) (1/1)
26 Transponierung 79 > t r a n s p o n i e r e : : Ton > > > t r a n s p o n i e r e i ( Pause d ) = Pause d 82 > t r a n s p o n i e r e i ( Note t d ) = Note ( t+i ) d 83 > t r a n s p o n i e r e i (m1 : : m2) = ( t r a n s p o n i e r e i m1) 84 > : : ( t r a n s p o n i e r e i m2) 85 > t r a n s p o n i e r e i (m1 :+: m2) = ( t r a n s p o n i e r e i m1) 86 > :+: ( t r a n s p o n i e r e i m2)
27 Verschiedenes 92 > wdh : : > 93 > wdh m = m : : m > a d _ i n f i n i t u m : : > 96 > a d _ i n f i n i t u m m = m : : a d _ i n f i n i t u m m > e i n s a t z d m = ( Pause d ) : : m
28 Bruder Jakob: Text Bruder Jakob, Bruder Jakob Schläfst du noch? Schläfst du noch? : Hörst du nicht die Glocken? : Ding dang dong, ding dang dong. Quelle: FrereJacques1pt.png&filetimestamp= , Public Domain
WS 2011/2012. Georg Sauthoff 1. October 26, 2011
WS 2011/2012 Georg 1 AG Praktische Informatik October 26, 2011 1 gsauthof@techfak.uni-bielefeld.de pea*nuts pea*nuts steht für probieren, erfahren, anwenden - Naturwissenschaften und Technik für Schülerinnen
MehrOctober 29, Universität Bielefeld AG Praktische Informatik. Programmieren in Haskell. Stefan Janssen. Typ-Synonyme. Algebraische Datentypen
Universität Bielefeld AG Praktische Informatik October 29, 2014 Typsynonyme Neue Typnamen durch Typsynonyme: 1 type Pair a b = (a,b) 2 type Triple a b c = (a,b,c) 3 type OrdList a = [ a] definiert neue
MehrKapitel 2: Modellierung. Programmieren in Haskell 1
Kapitel 2: Modellierung Programmieren in Haskell 1 Eine Formelsprache für Musik Programmieren in Haskell 2 Formeln, die Musik bedeuten Note 0 (1/4) -- Viertelnote tiefes C Note 24 (1/1) -- ganze Note c
Mehr(einsatz (2/1) (transponiere 12 endlos)) (einsatz (4/1) endlos) :+: (einsatz (6/1) endlos )))
Algorithmen und Datenstrukturen I phrase1 phrase2 c e (1/4) (1/4) :*: :*: d f (1/4) (1/4) :*: :*: e g (1/4) (1/2) :*: c (1/4) phrase3 = g :*: (1/8) e (1/4) :*: a :*: (1/8) c (1/4) :*: g (1/8) :*: f (1/8)
MehrProgrammieren in Haskell
Programmieren in Haskell Syntax und Semantik von Haskell Programmieren in Haskell 1 Was wir heute (und nächstes mal) machen Datentypdefinitionen Wertdefinitionen, Variablenbindungen Musterbindungen Funktionsbindungen
MehrWS 2011/2012. Georg Sauthoff 1. November 1, 2011
WS 2011/2012 Georg 1 AG Praktische Informatik November 1, 2011 1 gsauthof@techfak.uni-bielefeld.de Übungen Abgaben und Aufgabenblätter am Ende der Vorlesung Skript gibt es demnächst in den Übungen Der
MehrWS 2011/2012. Georg Sauthoff 1. November 11, 2011
WS 2011/2012 Georg 1 AG Praktische Informatik November 11, 2011 1 gsauthof@techfak.uni-bielefeld.de Skripte sind nun fertig und gibt es in den Tutorien Sprechstunden Zusammenfassung -Kapitel Signatur zuerst
MehrTyp-Polymorphismus. November 12, 2014
Typ-Polymorphismus Universität Bielefeld AG Praktische Informatik November 12, 2014 Das Haskell Typ-System Wir beginnen mit einer Wiederholung des Bekannten: In allen Programmiersprachen sind Typ-Konzepte
MehrProgrammieren in Haskell
Programmieren in Haskell Syntax und Semantik von Haskell Programmieren in Haskell 1 Was wir heute (und nächstes mal) machen Datentypdefinitionen Wertdefinitionen, Variablenbindungen Musterbindungen Funktionsbindungen
MehrKapitel 3: Eine einfache Programmiersprache. Programmieren in Haskell 1
Kapitel 3: Eine einfache Programmiersprache Programmieren in Haskell 1 Datentypen, Datentypdefinitionen data Instrument = Oboe HonkyTonkPiano Cello VoiceAahs data Musik = Note Ton Dauer Pause Dauer Musik
MehrALP I. Funktionale Programmierung
ALP I Funktionale Programmierung Typ-Klassen und SS 2011 Überladung von Datentypen Funktionen sollen oft auf verschiedene Datentypen anwendbar sein, aber nicht auf beliebige Datentypen. Beispiel: Die (+)
MehrProgrammieren in Haskell Einstieg in Haskell
Programmieren in Haskell Einstieg in Haskell Peter Steffen Universität Bielefeld Technische Fakultät 24.10.2008 1 Programmieren in Haskell Was wir heute machen Umfrage: Wer hat den Hugs ausprobiert? Ausdrücke
MehrProgrammieren in Haskell
beschreibungen Universität Bielefeld AG Praktische Informatik October 21, 2014 der funktionalen Programmierung gibt es allen Programmiersprachen, aber der funktionalen Programmierung werden sie besonders
MehrGrundlegende Datentypen
Funktionale Programmierung Grundlegende Datentypen Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 14.11.2017 15:37 Inhaltsverzeichnis Typen........................................
MehrProgrammieren in Haskell
Programmieren in Haskell Wir steigen ein... Programmieren in Haskell 1 Was wir heute machen Umfrage: Wer hat den Hugs ausprobiert? Ausdrücke und Werte Datentypen Funktionen Aufgabe für diese Woche Programmieren
MehrFunktionale Programmierung Grundlegende Datentypen
Grundlegende Datentypen Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 06.11.2017 16:45 Inhaltsverzeichnis Typen........................................
MehrEinführung in die funktionale Programmierung
Einführung in die funktionale Programmierung Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 26. Oktober 2006 Haskell - Einführung Syntax Typen Auswertung Programmierung
MehrGrundlegende Datentypen
Grundlegende Datentypen (Funktionale Programmierung) Prof. Dr. Oliver Braun Letzte Änderung: 18.03.2018 21:08 Grundlegende Datentypen 1/16 Typen in Haskell ist alles streng typisiert Haskell verfügt über
MehrProgrammieren in Haskell
Programmieren in Haskell Wir steigen ein... Programmieren in Haskell 1 Was wir heute machen Umfrage: Wer hat den Hugs ausprobiert? Ausdrücke und Werte Datentypen Funktionen Aufgabe für s Wochenende Programmieren
MehrGrundlegende Datentypen
Grundlegende Datentypen Funktionale Programmierung Prof. Dr. Oliver Braun Letzte Änderung: 22.10.2018 10:53 Grundlegende Datentypen 1/21 Typen in Haskell ist alles streng typisiert Haskell verfügt über
MehrPraktische Informatik 3: Funktionale Programmierung Vorlesung 4 vom : Typvariablen und Polymorphie
Rev. 2749 1 [28] Praktische Informatik 3: Funktionale Programmierung Vorlesung 4 vom 04.11.2014: Typvariablen und Polymorphie Christoph Lüth Universität Bremen Wintersemester 2014/15 2 [28] Fahrplan Teil
MehrProgrammierkurs II. Typsynonyme & algebraische Datentypen
Programmierkurs II Typsynonyme & algebraische Datentypen Um Dinge der realen Welt abzubilden, ist es nur in den seltensten Fällen komfortabel alles als Zahlen, Strings oder Listen zu kodieren. Wir benötigen
MehrEinführung in Haskell
Einführung in Haskell Axel Stronzik 21. April 2008 1 / 43 Inhaltsverzeichnis 1 Allgemeines 2 / 43 Inhaltsverzeichnis 1 Allgemeines 2 Funktions- und Typdefinitionen 2 / 43 Inhaltsverzeichnis 1 Allgemeines
MehrProgrammieren in Haskell Das Haskell Typsystem
Programmieren in Haskell Das Haskell Typsystem Peter Steffen Robert Giegerich Universität Bielefeld Technische Fakultät 22.01.2010 1 Programmieren in Haskell Belauscht... Lisa Lista: Ohne Typen keine korrekten
MehrFunktionale Programmierung Mehr funktionale Muster
Mehr funktionale Muster Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 07.12.2017 06:56 Inhaltsverzeichnis Pattern Matching..................................
MehrWS 2012/2013. Robert Giegerich. 21. November 2012
WS 2012/2013 Robert AG Praktische Informatik 21. November 2012 Funktionen als Bürger erster Klasse Funktionen definieren kann man in jeder Programmiersprache. Eine funktionalen Programmiersprache erlaubt
MehrParadigmen der Programmierung
SS 11 Prüfungsklausur 25.07.2011 Aufgabe 5 (6+9 = 15 Punkte) a) Bestimmen Sie jeweils den Typ der folgenden Haskell-Ausdrücke: ( 1, 2 :"3", 4 < 5) :: (Char, String, Bool) [(last, tail), (head, take 5)]
MehrProgrammieren in Haskell Programmiermethodik
Programmieren in Haskell Programmiermethodik Peter Steffen Universität Bielefeld Technische Fakultät 12.01.2011 1 Programmieren in Haskell Bisherige Themen Was soll wiederholt werden? Bedienung von hugs
MehrWS 2011/2012. Georg Sauthoff 1. October 18, 2011
in in WS 2011/2012 Georg 1 AG Praktische Informatik October 18, 2011 1 gsauthof@techfak.uni-bielefeld.de Neue Übungsgruppen in neue Übungsgruppen neue Tutoren Sprechstunden in GZI-Arbeitsraum (V2-240)
MehrPraktische Informatik 3: Funktionale Programmierung Vorlesung 4 vom : Typvariablen und Polymorphie
16:02:01 2017-01-17 1 [37] Praktische Informatik 3: Funktionale Programmierung Vorlesung 4 vom 08.11.2016: Typvariablen und Polymorphie Christoph Lüth Universität Bremen Wintersemester 2016/17 PI3 WS 16/17
MehrWS 2013/2014. Robert Giegerich. 11. Dezember 2013
WS 2013/2014 Robert AG Praktische Informatik 11. Dezember 2013 höherer Ordnung Worum geht es heute? In Haskell gibt es, die als Argument haben oder als Ergebnis liefern. Diese nennt man höherer Ordnung.
MehrWS 2011/2012. Robert Giegerich. October 17, 2012
in in WS 2011/2012 Robert AG Praktische Informatik October 17, 2012 Sprechstunden in GZI-Arbeitsraum (V2-240) Tutoren-Sprechstunden (V2-228) http://www.techfak.uni-bielefeld.de/ags/pi/ lehre/audiws12/#ueb
Mehr9 Algebraische Datentypen
9 Algebraische Datentypen Dieses Kapitel erweitert Haskells Typsystem, das neben Basistypen (Integer, Float, Char, Bool,... ) und Typkonstruktoren ([ ] und ( )) auch algebraische Datentypen kennt. Ganz
MehrPrüfung Funktionale Programmierung
Hochschule für angewandte Wissenschaften München Fakultät für Informatik und Mathematik Studiengruppe IF, IB, IC Sommersemester 2015 Prüfung Funktionale Programmierung Datum : 23.07.2015, 10:30 Uhr Bearbeitungszeit
MehrAlgorithmen und Programmieren 1 Funktionale Programmierung - Musterlösung zur Übungsklausur -
Algorithmen und Programmieren 1 Funktionale Programmierung - Musterlösung zur Übungsklausur - Punkte: A1: 30, A2: 20, A3: 20, A4: 20, A5: 10, A6: 20 Punkte: /120 12.02.2012 Hinweis: Geben Sie bei allen
MehrTypklassen. Natascha Widder
Typklassen Natascha Widder 19.11.2007 Motivation Typklassen fassen Typen mit ähnlichen Operatoren zusammen ermöglichen überladenen Funktionen Definition Typklassen Deklarationsschema class Name Platzhalter
MehrEinführung in die Funktionale Programmierung mit Haskell
Einführung in die Funktionale Programmierung mit Haskell Typklassen und Polymorphie LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians Universität, München 23. Mai 2013 Planung Freitag:
MehrWS 2013/2014. Robert Giegerich. 11. Dezember 2013
WS 2013/2014 Robert AG Praktische Informatik 11. Dezember 2013 höherer Ordnung Worum geht es heute? In Haskell gibt es, die als Argument haben oder als Ergebnis liefern. Diese nennt man höherer Ordnung.
MehrProinformatik Marco Block Dienstag, den 21. Juli 2009
2. Skript vom Dienstag, den 21. Juli 2009 zur Vorlesung Proinformatik Marco Block Dienstag, den 21. Juli 2009 1 Verschiedenes 1.1 let und where Am Anfang der Vorlesung haben wir uns ein paar einfache neue
MehrWS 2011/2012. RobertGiegerich. November 12, 2013
WS 2011/2012 Robert AG Praktische Informatik November 12, 2013 Haskell-Syntax: Ergänzungen Es gibt noch etwas bequeme Notation für Fallunterscheidungen, die wir bisher nicht benutzt haben. Bisher kennen
MehrWS 2011/2012. RobertGiegerich. November 12, 2013
WS 2011/2012 Robert AG Praktische Informatik November 12, 2013 Haskell-Syntax: Ergänzungen Es gibt noch etwas bequeme Notation für Fallunterscheidungen, die wir bisher nicht benutzt haben. Bisher kennen
MehrHaskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell
Haskell, Typen, und Typberechnung Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Ziele: Haskells Typisierung Typisierungs-Regeln Typ-Berechnung Milners
MehrDie Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten.
4.5.5 Rekursive Typen Die Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten. datatype IntList = Nil Cons o f ( i n t IntList ) ; Damit
MehrWorkshop Einführung in die Sprache Haskell
Workshop Einführung in die Sprache Haskell Nils Rexin, Marcellus Siegburg und Alexander Bau Fakultät für Informatik, Mathematik und Naturwissenschaften Hochschule für Technik, Wirtschaft und Kultur Leipzig
MehrALP I. Funktionale Programmierung
ALP I Funktionale Programmierung Zusammengesetzte Datentypen in Haskell WS 2012/2013 Zusammengesetzte Datentypen Tupel List String Zusammengesetzte Datentypen Tupel-Datentyp Ein Tupel ist eine Ansammlung
MehrFunktionale Programmierung und Typtheorie
Funktionale Programmierung und Typtheorie 5. Fortgeschrittene Konzepte 5.1 Komprehensionen 5.2 Partielle Applikationen 5.3 Strikte und nichtstrikte Funktionen 5.4 Unendliche Datenstrukturen und verzögerte
MehrÜbergang von funktionaler zu OOP. Algorithmen und Datenstrukturen II 1
Übergang von funktionaler zu OOP Algorithmen und Datenstrukturen II 1 Imperative vs. funktionale Programmierung Plakativ lassen sich folgende Aussagen treffen: funktional: imperativ: Berechnung von Werten
MehrGrundlagen der Programmierung 2 A (Listen)
Grundlagen der Programmierung 2 A (Listen) Haskell: Listen Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2017 Listen und Listenfunktionen Listen modellieren Folgen von gleichartigen, gleichgetypten Objekten.
MehrListen und Listenfunktionen. Grundlagen der Programmierung 2 A (Listen) Listen und Listenfunktionen. Listen? Haskell: Listen
Listen und Listenfunktionen Grundlagen der Programmierung 2 A (Listen) Haskell: Listen Prof. Dr. Manfred Schmidt-Schauß Listen modellieren Folgen von gleichartigen, gleichgetypten Objekten. Ausdruck im
MehrPrüfung Funktionale Programmierung
Hochschule für angewandte Wissenschaften München Fakultät für Informatik und Mathematik Studiengruppe IF, IB, IC Sommersemester 2014 Prüfung Funktionale Programmierung Datum : 16.07.2014, 12:30 Uhr Bearbeitungszeit
MehrProgrammieren in Haskell. Stefan Janssen. Strukturelle Rekursion. Universität Bielefeld AG Praktische Informatik. 10.
Universität Bielefeld AG Praktische Informatik 10. Dezember 2014 Wiederholung: Schema: f :: [σ] -> τ f [] = e 1 f (a : as) = e 2 where s = f as wobei e 1 und e 2 Ausdrücke vom Typ τ sind und e 2 die Variablen
MehrWS 2012/2013. Robert Giegerich. January 22, 2014
WS 2012/2013 Robert Systeme AG Praktische Informatik January 22, 2014 Das Haskell System In allen Programmiersprachen sind die Konzepte ein prägendes Element. Das Haskell System hat zwei grundlegende Konzepte:
MehrGrundlagen der Programmierung 3 A
Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2016 Haskell, Typen, und Typberechnung Ziele: Haskells Typisierung Typisierungs-Regeln
MehrInformatik A WS 2007/08. Nachklausur
Informatik A WS 2007/08 Nachklausur 18.04.2008 Name:.............................. Matrikelnummer:.................. Tutor:.................. Bitte Zutreffendes ankreuzen: Hauptfach Bioinformatik Hauptfach
MehrHaskell for Hackers... or why functional programming matters
... or why functional programming matters Franz Pletz CCC München 27-06-2009 @ GPN8 Fahrplan Ablauf Motivation 1 Ablauf Motivation 2 3 4 Ablauf Ablauf Motivation bei Fragen/Unklarheiten:
MehrFunktionale Programmierung. Monoide. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München
Funktionale Programmierung Monoide Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 03.12.2018 07:53 Inhaltsverzeichnis Abstraktion..................................... 1 Eine
MehrGrundlagen der Programmierung 3 A
Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2017 Haskell, Typen, und Typberechnung Ziele: Haskells Typisierung Typisierungs-Regeln
MehrVerarbeitung unendlicher Datenstrukturen Jetzt können wir z.b. die unendliche Liste aller geraden Zahlen oder aller Quadratzahlen berechnen:
Verarbeitung unendlicher Datenstrukturen Jetzt können wir z.b. die unendliche Liste aller geraden Zahlen oder aller Quadratzahlen berechnen: take 1 0 ( f i l t e r ( fn x => x mod 2=0) nat ) ; val it =
MehrWas bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell):
Was bisher geschah deklarative Programmierung funktional: Programm: Menge von Termgleichungen, Term Auswertung: Pattern matsching, Termumformungen logisch: Programm: Menge von Regeln (Horn-Formeln), Formel
MehrTag 7. Pattern Matching und eigene Datentypen
Tag 7 Pattern Matching und eigene Datentypen Heute werden wir eine Technik kennenlernen, die dafür sorgt, daß wir sehr viel übersichtlichere und kürzere Programme schreiben können. Als Überleitung auf
MehrWS 2011/2012. Robert Giegerich Dezember 2013
WS 2011/2012 Robert 1 AG Praktische Informatik 11. Dezember 2013 1 robert@techfak.uni-bielefeld.de Vorschau Themen heute: Funktionen höherer Ordnung (Fortsetzung) künstliche Striktheit mehr zu fold für
MehrBeispiele: Funktionsabstraktion (3) Funktionsdeklaration. Funktionsdeklaration (2) Funktionsdeklaration (3) 3. Abstraktion über Funktionsbezeichner:
Beispiele: Funktionsabstraktion (3) Funktionsdeklaration 3. Abstraktion über Funktionsbezeichner: Ausdruck: f (f x) Abstraktion: \ f x -> f (f x) Mit Bezeichnervereinbarung: twice = \ f x -> f (f x) erg
MehrFunktionale Programmierung
Grundlagen der funktionalen Programmierung II LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians Universität, München 7. Mai 2009 Aus Grundlagen I Terminänderung: Vorlesung am Mo
MehrMonoide. Funktionale Programmierung. Prof. Dr. Oliver Braun Letzte Änderung: :54. Monoide 1/16
Monoide Funktionale Programmierung Prof. Dr. Oliver Braun Letzte Änderung: 09.10.2018 06:54 Monoide 1/16 Abstraktion gleichartige Strukturen sollten abstrahiert werden Beispiel: Collections in Haskell
MehrPROGRAMMIERUNG UND MODELLIERUNG
PROGRAMMIERUNG UND MODELLIERUNG MIT HASKELL TEIL 4: BENUTZERDEFINIERTE DATENTYPEN Steffen Jost LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians Universität, München 25. April 2018
MehrMotivation Von Funktoren, Komposition, Applikation Zu Monoiden Die Monade Zusammenfassung. Monaden für alle. Franz Pletz
Monaden für alle Franz Pletz Chaos Computer Club München 13. Juni 2010, GPN10 Wieso, weshalb, warum? einige von euch haben sich sicher schon mal Haskell angeschaut und sind an Monaden
MehrProgrammieren in Haskell Programmieren mit Listen
Programmieren in Haskell Programmieren mit Listen Peter Steffen Universität Bielefeld Technische Fakultät 14.11.2008 1 Programmieren in Haskell Ein eigener Listen-Datentyp data List a = Nil Cons a (List
MehrEinführung in die Informatik 2
Technische Universität München Fakultät für Informatik Prof. Tobias Nipkow, Ph.D. Manuel Eberl, Lars Hupel, Lars Noschinski Wintersemester 2014/15 Lösungsblatt Endklausur 13. Februar 2015 Einführung in
MehrProgrammieren in Haskell
Programmieren in Haskell Programmieren mit Listen Programmieren in Haskell 1 Was wir heute machen Eigener Listen-Datentyp Eine Sortierfunktion Nützliche Listenfunktionen Programmieren in Haskell 2 Ein
MehrMonaden. 14. Januar 2015
Universität Bielefeld AG Praktische Informatik 14. Januar 2015 Imperativ nennt man Progamiersprachen, die mit Anweisungen operieren. Jede Anweisung hat Wirkungen auf einen globalen Zustand, der wiederum
MehrProgrammieren in Haskell
Programmieren in Haskell Programmieren mit Listen Programmieren in Haskell 1 Was wir heute machen Eigener Listen-Datentyp Eine Sortierfunktion Nützliche Listenfunktionen Programmieren in Haskell 2 Ein
MehrGrundlagen der Programmierung 2 (2.A)
Grundlagen der Programmierung 2 (2.A) Prof. Dr. Manfred Schmidt-Schauß Künstliche Intelligenz und Softwaretechnologie 5. Mai 2011 Listen und Listenfunktionen Listen modellieren Folgen von gleichartigen,
MehrHaskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Überladung und Konversion in Haskell. Typisierung in Haskell
Haskell, Typen, und Typberechnung Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr Manfred Schmidt-Schauß Ziele: Haskells Typisierung Typisierungs-Regeln Typ-Berechnung Sommersemester
MehrFunktionale Programmierung ALP I. Funktionen höherer Ordnung SS Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda
ALP I SS 2011 Funktionstypen Funktionen haben einen Datentyp, der folgende allgemeine Form hat: functionname :: T 1 -> T 2, wobei T 1, T 2 wiederum beliebige Datentypen sind Beispiel: T 1 T 2 Der Datentyp
MehrPraktische Informatik 3: Funktionale Programmierung Vorlesung 6 vom : Funktionen Höherer Ordnung II und Effizienzaspekte
16:02:08 2017-01-17 1 [34] Praktische Informatik 3: Funktionale Programmierung Vorlesung 6 vom 22.11.2016: Funktionen Höherer Ordnung II und Effizienzaspekte Christoph Lüth Universität Bremen Wintersemester
MehrAbstrakte Datentypen I
6 Abstrakte Datentypen I Ein Datentyp heißt abstrakt, wenn seine Eigenschaften allein durch die für ihn definierten Operationen festgelegt sind, während die Repräsentation seiner Werte dem Benutzer verborgen
MehrProgrammieren in Haskell
Universität Bielefeld AG Praktische Informatik October 12, 2014 Wir begnen mit eem Überblick über die Syntax von Namen versus Schlüsselwörter Namen bezeichnen Werte (aller Art) und sd frei wählbar Schlüsselwörter
MehrVorsemesterkurs Informatik
Vorsemesterkurs Informatik Sommersemester 2011 Grundlagen der Programmierung in Haskell SoSe 2011 Stand der Folien: 30. März 2011 Übersicht 1 Ausdrücke und Typen 2 Funktionen 3 Rekursion Vorkurs Informatik
MehrFunktionen höherer Ordnung. 3. Dezember 2014
höherer Ordnung Universität Bielefeld AG Praktische Informatik 3. Dezember 2014 höherer Ordnung Worum geht es heute? In Haskell gibt es, die als Argument haben oder als Ergebnis liefern. Diese nennt man
MehrProgrammieren in Haskell
Programmieren in Haskell Felder (Arrays) Programmieren in Haskell 1 Was wir heute machen Motivationsbeispiel Die Typklasse Ix Felder in Haskell Funktionstabellierung Binäre Suche Pascalsches Dreieck Hashing
MehrTypklassen und Überladung in Haskell
Typklassen und Überladung in Haskell Überladung: Es gibt mehrere Funktionen mit gleichem Namen. der Typ der Argumente bestimmt, welche gemeint ist. (1; i) + (3; 2i) statt (1, i) complexadd (3; 2i). Haskell-Typklassen:
MehrZahlen in Haskell Kapitel 3
Einführung in die Funktionale Programmiersprache Haskell Zahlen in Haskell Kapitel 3 FH Wedel IT-Seminar: WS 2003/04 Dozent: Prof. Dr. Schmidt Autor: Timo Wlecke (wi3309) Vortrag am: 04.11.2003 - Kapitel
MehrAbstrakte Datentypen II
7 Abstrakte Datentypen II Nachdem wir im letzten Kapitel die grundlegenden Eigenschaften abstrakter Datentypen beschrieben haben und dabei eher einfache Beispiele betrachtet haben, soll es in diesem Kapitel
MehrProgrammieren in Haskell Abstrakte Datentypen
Programmieren in Haskell Abstrakte Datentypen Peter Steffen Universität Bielefeld Technische Fakultät 09.01.2009 1 Programmieren in Haskell Einführung Man unterscheidet zwei Arten von Datentypen: konkrete
MehrFunktionale Programmierung
Monaden LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians Universität, München 30. April 2009 Monaden Eine Monade ist ein Programmier-Schema für sequentielle Berechnungen. In Haskell
MehrBasiskonstrukte von Haskell
Basiskonstrukte von Haskell PD Dr. David Sabel Goethe-Universität Frankfurt am Main 29. September 2015 Basistypen und Operationen Ganzzahlen: Int = Ganzzahlen beschränkter Länge Integer = Ganzzahlen beliebiger
MehrKapitel 6: Abstraktion. Programmieren in Haskell 1
Kapitel 6: Abstraktion Programmieren in Haskell 1 Nachtrag Listenbeschreibungen divisors :: (Integral a) => a -> [a] divisors n = [d d [a] primes = [n
MehrHaskell für Mathematiker
Haskell für Mathematiker Joachim Breitner AG Seminar Topology 12. Mai 2016, Karlsruhe LEHRSTUHL PROGRAMMIERPARADIGMEN 1 KIT 19.2.2016 University of the Joachim State ofbreitner Baden-Wuerttemberg - Haskell
MehrProInformatik: Funktionale Programmierung. Punkte
ProInformatik: Funktionale Programmierung 27.7-22.8.2008, M. Knobelsdorf Probeklausur Ihre persönliche Klausurnummer: Vorname, Nachname: Aufgabe 1 2 3 4 5 6 7 8 Punkte 12 4 4 4 4 2 4 6 40 Erz. Punkte Zum
MehrEinführung in die Funktionale Programmierung mit Haskell
Wiederholung Listen II Funktionsdefinition Einführung in die Funktionale Programmierung mit Haskell List-Comprehension, Patterns, Guards LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians
MehrHASKELL KAPITEL 2.1. Notationen: Currying und das Lambda-Kalkül
HASKELL KAPITEL 2.1 Notationen: Currying und das Lambda-Kalkül Bisheriges (Ende VL-Teil 1) weite :: (Float,Float) ->Float weite (v0, phi) = (square(v0)/9.81) * sin(2 * phi) (10, 30 ) smaller ::(Integer,
MehrFrank eine Programmiersprache mit Effekten
Frank eine Programmiersprache mit Effekten Tim Baumann Curry Club Augsburg 23. Februar 2017 1 / 30 Paper: GitHub: Do Be Do Be Do von Sam Lindley, Conor McBride und Craig McLaughlin https://github.com/cmcl/frankjnr
MehrFrage, Fragen und nochmals Fragen
Frage, Fragen und nochmals Fragen Berthold Hoffmann Universität Bremen and DFKI Bremen hof@informatik.uni-bremen.de In diesem Text stehen einige Fragen, die man sich zu den Folien der Veranstaltung Funktionales
MehrEinführung in die Informatik 2
Technische Universität München Fakultät für Informatik Prof. Tobias Nipkow, Ph.D. Lars Noschinski, Dr. Jasmin Blanchette, Dmitriy Traytel Wintersemester 2012/13 Lösungsblatt Endklausur 9. Februar 2013
MehrCrashkurs: Haskell. Mentoring FU Berlin Felix Droop
Crashkurs: Haskell Mentoring FU Berlin 7.11.2018 Felix Droop Crashkurs Haskell 1. GHCi Umgebung
Mehrexpr :: Expr expr = Mul (Add (Const 3) (Const 4)) (Div (Sub (Const 73) (Const 37)) (Const 6))
1 - Korrektur 2 - Abstrakte Datentypen für arithmetische Ausdrücke Der Datentyp Wir beginnen zunächst mit dem algebraischen Datentyp für Ausdrücke. Hierfür definieren wir einen Konstruktor Number für Zahlen,
MehrProgrammieren in Haskell
Programmieren in Haskell Felder (Arrays) Programmieren in Haskell 1 Was wir heute machen Motivationsbeispiel Die Typklasse Ix Felder in Haskell Funktionstabellierung Binäre Suche Pascalsches Dreieck Ein
MehrPraktische Informatik 3: Funktionale Programmierung Vorlesung 11 vom : Monaden als Berechnungsmuster
16:02:16 2017-01-17 1 [30] Praktische Informatik 3: Funktionale Programmierung Vorlesung 11 vom 10.01.2017: Monaden als Berechnungsmuster Christoph Lüth Universität Bremen Wintersemester 2016/17 Frohes
Mehr