Escher funktionale und logische Programmierung

Größe: px
Ab Seite anzeigen:

Download "Escher funktionale und logische Programmierung"

Transkript

1 Escher funktionale und logische Programmierung Seminar Programming Languages From Hell Lars Hupel Dieses Werk ist lizenziert unter den Bedingungen der Creative Commons Namensnennung 3.0 Deutschland. Lars Hupel Escher / 20

2 Paradigmen funktional Reduktionssemantik Pattern Matching Lazy Evaluation logisch Backtracking Unifikation Lars Hupel Escher / 20

3 Escher: Code-Beispiel &&: Bool -> Bool -> Bool ; (&& True x) = x; (&& False x) = False ; (&& ( x y) z) = ( (&& x z) (&& y z)); (&& ( ite u v w) t) = ( ite (&& u t) v (&& w t)); Lars Hupel Escher / 20

4 Auswertungsstrategie Escher-Programme bestehen aus einzelnen Definitionen: h = b Auswertung durch Termersetzung Term ( Redex ) t wird durch Rumpf b einer passenden Definition h ersetzt, wenn: θ(h) t Lars Hupel Escher / 20

5 Auswertungsstrategie Escher-Programme bestehen aus einzelnen Definitionen: h = b Auswertung durch Termersetzung Term ( Redex ) t wird durch Rumpf b einer passenden Definition h ersetzt, wenn: θ(h) t Lars Hupel Escher / 20

6 Auswertungsstrategie Escher-Programme bestehen aus einzelnen Definitionen: h = b Auswertung durch Termersetzung Term ( Redex ) t wird durch Rumpf b einer passenden Definition h ersetzt, wenn: θ(h) t Lars Hupel Escher / 20

7 Funktionen als Werte Behandlung von Lambda-Ausdrücken als Werte aber: Funktionen nicht vergleichbar Escher erlaubt trotzdem Matching auf Funktionen Lars Hupel Escher / 20

8 Funktionen als Werte Behandlung von Lambda-Ausdrücken als Werte aber: Funktionen nicht vergleichbar Escher erlaubt trotzdem Matching auf Funktionen Lars Hupel Escher / 20

9 Funktionen als Werte Haskell Prelude> \x -> 3 <interactive>:1:0: No instance for (Show (t1 -> t)) arising from a use of print at <interactive>:1:0-6 Possible fix: add an instance declaration for (Show (t1 -> t)) In a stmt of a do expression: print it Lars Hupel Escher / 20

10 Funktionen als Werte Escher prompt> : \x. 3; Query: \x.3 Answer: \x.3 ; Lars Hupel Escher / 20

11 Escher: Code-Beispiel &&: Bool -> Bool -> Bool ; (&& True x) = x; (&& False x) = False ; (&& ( x y) z) = ( (&& x z) (&& y z)); (&& ( ite u v w) t) = ( ite (&& u t) v (&& w t)); Lars Hupel Escher / 20

12 Escher: Code-Beispiel &&: Bool -> Bool -> Bool ; (&& True x) = x; (&& False x) = False ; (&& ( x y) z) = ( (&& x z) (&& y z)); (&& ( ite u v w) t) = ( ite (&& u t) v (&& w t)); Beispielanfrage: && ( True x) y Lars Hupel Escher / 20

13 Syntaktischer Zucker Mengen {1,2,3} wird transformiert in eine Funktion: \ pv.( ite (== pv 1) True ( ite (== pv 2) True ( ite (== pv 3) True False ))) ; Lars Hupel Escher / 20

14 Syntaktischer Zucker Mengen {1,2,3} wird transformiert in eine Funktion: \ pv.( ite (== pv 1) True ( ite (== pv 2) True ( ite (== pv 3) True False ))) ; Lars Hupel Escher / 20

15 Syntaktischer Zucker Quantoren Unterstützung für Existenz- und Allquantor native Formulierung von logischen Aussagen Lars Hupel Escher / 20

16 Syntaktischer Zucker Quantoren Unterstützung für Existenz- und Allquantor native Formulierung von logischen Aussagen \ forall y. ( implies ({1,2} y) ({1,2,3} y)); \ exists y. (&& ({1,2} y) ({3,4} y)); Lars Hupel Escher / 20

17 Syntaktischer Zucker Quantoren Unterstützung für Existenz- und Allquantor native Formulierung von logischen Aussagen \ forall y. ( implies ({1,2} y) ({1,2,3} y)); True \ exists y. (&& ({1,2} y) ({3,4} y)); Lars Hupel Escher / 20

18 Syntaktischer Zucker Quantoren Unterstützung für Existenz- und Allquantor native Formulierung von logischen Aussagen \ forall y. ( implies ({1,2} y) ({1,2,3} y)); True \ exists y. (&& ({1,2} y) ({3,4} y)); False Lars Hupel Escher / 20

19 Programmierstile funktional Funktionen: Parameter Resultat concat : (( List a) * ( List a)) -> ( List a) ; Lars Hupel Escher / 20

20 Programmierstile funktional Funktionen: Parameter Resultat concat : (( List a) * ( List a)) -> ( List a) ; Lars Hupel Escher / 20

21 Programmierstile logisch Relationen: Parameter Resultat {True, False} append : (( List a) * ( List a) * ( List a)) -> Bool ; Lars Hupel Escher / 20

22 Programmierstile logisch Relationen: Parameter Resultat {True, False} append : (( List a) * ( List a) * ( List a)) -> Bool ; Lars Hupel Escher / 20

23 Standardbibliothek keine eingebauten Umformungsregeln Definition komplett über Bibliothek Nicht-Standard-Logiken möglich Lars Hupel Escher / 20

24 Standardbibliothek keine eingebauten Umformungsregeln Definition komplett über Bibliothek Nicht-Standard-Logiken möglich Lars Hupel Escher / 20

25 Standardbibliothek keine eingebauten Umformungsregeln Definition komplett über Bibliothek Nicht-Standard-Logiken möglich Lars Hupel Escher / 20

26 Damenproblem safe : ( Int * Int ) -> ( List ( Int * Int )) -> Bool ; ( safe q []) = True ; ( safe (x, y) (# (u, v) z)) = (&& ( (== (x, y) (u, v)) (&& ( not (== ( sub x u) ( sub y v))) ( not (== ( sub u x) ( sub y v))) )) ( safe (x, y) z) ); safelist : ( List ( Int * Int )) -> Bool ; ( safelist x) = \ forall y. ( implies ( inlist y x) ( safe y x)); Lars Hupel Escher / 20

27 Damenproblem queenlist : Int -> ( List ( Int * Int )) -> Bool ; ( queenlist n x) = \ exists y. (&& ( permute (( range n), y)) (== x ( zip (( range n), y))) ); solution : Int -> ( List ( Int * Int )) -> Bool ; ( solution n x) = (&& ( queenlist n x) ( safelist x)); altcount : Bool -> Int ; ( altcount (== x_sv (# y z))) = 1; ( altcount ( x y)) = ( add ( altcount x) ( altcount y)); ( altcount False ) = 0; Lars Hupel Escher / 20

28 Damenproblem : ( altcount (( solution 4) x)) Query : ( altcount (( solution 4) x)) Steps = 9437 Answer : 2 ; : ( altcount (( solution 6) x)) Query : ( altcount (( solution 6) x)) Steps = Answer : 4 ; Lars Hupel Escher / 20

29 Vorteile elegante Weise, Probleme zu formulieren direkter Umgang mit mathematischen Konstrukten Lars Hupel Escher / 20

30 Vorteile elegante Weise, Probleme zu formulieren direkter Umgang mit mathematischen Konstrukten Lars Hupel Escher / 20

31 Nachteile schlechte Performance hohe Komplexität als Lehrsprache ausgelegt, daher kein vernünftiger Compiler verfügbar Lars Hupel Escher / 20

32 Nachteile schlechte Performance hohe Komplexität als Lehrsprache ausgelegt, daher kein vernünftiger Compiler verfügbar Lars Hupel Escher / 20

33 Nachteile schlechte Performance hohe Komplexität als Lehrsprache ausgelegt, daher kein vernünftiger Compiler verfügbar Lars Hupel Escher / 20

34 Vergleich mit Curry Curry: neuere funktional-logische Sprache andere Auswertungsstrategien, wenn Variablen (noch) unbekannt sind Narrowing: geschicktes Raten Residuation: Verzögerung Escher führt strikt Termersetzung durch Lars Hupel Escher / 20

35 Vergleich mit Curry Curry: neuere funktional-logische Sprache andere Auswertungsstrategien, wenn Variablen (noch) unbekannt sind Narrowing: geschicktes Raten Residuation: Verzögerung Escher führt strikt Termersetzung durch Lars Hupel Escher / 20

36 Vergleich mit Curry Curry: neuere funktional-logische Sprache andere Auswertungsstrategien, wenn Variablen (noch) unbekannt sind Narrowing: geschicktes Raten Residuation: Verzögerung Escher führt strikt Termersetzung durch Lars Hupel Escher / 20

37 Vergleich mit Curry Curry: neuere funktional-logische Sprache andere Auswertungsstrategien, wenn Variablen (noch) unbekannt sind Narrowing: geschicktes Raten Residuation: Verzögerung Escher führt strikt Termersetzung durch Lars Hupel Escher / 20

38 Vergleich mit Curry Curry: neuere funktional-logische Sprache andere Auswertungsstrategien, wenn Variablen (noch) unbekannt sind Narrowing: geschicktes Raten Residuation: Verzögerung Escher führt strikt Termersetzung durch Lars Hupel Escher / 20

39 Escher funktionale und logische Programmierung Seminar Programming Languages From Hell Lars Hupel Dieses Werk ist lizenziert unter den Bedingungen der Creative Commons Namensnennung 3.0 Deutschland. Lars Hupel Escher / 20

Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell

Haskell, 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

Mehr

Grundlegende Datentypen

Grundlegende Datentypen Funktionale Programmierung Grundlegende Datentypen Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 14.11.2017 15:37 Inhaltsverzeichnis Typen........................................

Mehr

Haskell, 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. Ü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

Mehr

Funktionale Programmierung Grundlegende Datentypen

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

Mehr

Funktionale Programmierung. Das Funktionale Quiz. Das Funktionale Quiz. Das Funktionale Quiz

Funktionale Programmierung. Das Funktionale Quiz. Das Funktionale Quiz. Das Funktionale Quiz Funktionale Programmierung Das Funktionale Quiz 31.5.2005 Nenne eine Gemeinsamkeit zwischen Typklassen und OO-Klassen Das Funktionale Quiz Das Funktionale Quiz Nenne einen Unterschied zwischen Typklassen

Mehr

Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung

Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung Gliederung n Teil I: Einleitung und Grundbegriffe l 1. Organisatorisches l 2. Grundlagen von Programmiersprachen n Teil II: Imperative und objektorientierte Programmierung l 1. Grundelemente der Programmierung

Mehr

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell):

Was 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

Mehr

Grundlagen der Programmierung 3 A

Grundlagen 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

Mehr

Einführung in Haskell

Einfü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

Mehr

Hallo Haskell. Funktionale Programmierung. Prof. Dr. Oliver Braun Letzte Änderung: :06. Hallo Haskell 1/23

Hallo Haskell. Funktionale Programmierung. Prof. Dr. Oliver Braun Letzte Änderung: :06. Hallo Haskell 1/23 Hallo Haskell Funktionale Programmierung Prof. Dr. Oliver Braun Letzte Änderung: 15.10.2018 07:06 Hallo Haskell 1/23 Glasgow Haskell Compiler (GHC) der Haskell-Compiler ist der GHC Sie installieren ihn

Mehr

Programmieren in Haskell Einführung

Programmieren in Haskell Einführung Programmieren in Haskell Einführung Peter Steffen Universität Bielefeld Technische Fakultät 16.10.2009 1 Programmieren in Haskell Veranstalter Dr. Peter Steffen Raum: M3-124 Tel.: 0521/106-2906 Email:

Mehr

Funktionale Programmierung Einführung

Funktionale Programmierung Einführung Einführung Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 13.09.2017 15:29 Inhaltsverzeichnis Was ist imperative Programmierung.......................

Mehr

(Common Lisp) Ein Vortrag von Matthias Schütz und Andreas Klein. auf dem UUGRN FixMe Treffen ( )

(Common Lisp) Ein Vortrag von Matthias Schütz und Andreas Klein. auf dem UUGRN FixMe Treffen ( ) (Common Lisp) Ein Vortrag von Matthias Schütz und Andreas Klein auf dem UUGRN FixMe Treffen (22.02.2008) Aufbau des Vortrags Kurze Einführung in die Sprache Listen Funktionen Macros Objektorientierung

Mehr

Einführung in die funktionale Programmierung

Einfü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

Mehr

Gliederung. Funktionale Programmierung. Pattern matching in Haskell. Pattern matching in ERLANG. Materialien zur Vorlesung

Gliederung. Funktionale Programmierung. Pattern matching in Haskell. Pattern matching in ERLANG. Materialien zur Vorlesung Gliederung Funktionale Programmierung Materialien zur Vorlesung D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg 1 Sommer 2011, 7.

Mehr

Die Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten.

Die 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

Mehr

Programmierkurs II. Typsynonyme & algebraische Datentypen

Programmierkurs 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

Mehr

Haskell für Mathematiker

Haskell 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

Mehr

Programmieren in Haskell

Programmieren 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

Mehr

Basiskonstrukte von Haskell

Basiskonstrukte 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

Mehr

Einführung in die funktionale Programmierung

Einführung in die funktionale Programmierung Einführung in die funktionale Programmierung Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 17. Oktober 2006 Einführung in Haskell: Syntax, Reduktionen, Kernsprachen Haskell,

Mehr

Prof. Dr. Ulrich Hoffmann, Prof. Dr. Uwe Schmidt

Prof. Dr. Ulrich Hoffmann, Prof. Dr. Uwe Schmidt Informatik Seminar WS 2009/2010 Prof. Dr. Ulrich Hoffmann, Prof. Dr. Uwe Schmidt Lisp in der JVM Michael Krüger (inf6065) 1 Übersicht 1. Hintergrund 2. Designziele 3. Spracheigenschaften 4. Klassenanalyse

Mehr

Programmieren in Haskell Einführung

Programmieren in Haskell Einführung Programmieren in Haskell Einführung Peter Steffen Universität Bielefeld Technische Fakultät 17.10.2008 1 Programmieren in Haskell Veranstalter Dr. Peter Steffen Raum: M3-124 Tel.: 0521/106-2906 Email:

Mehr

Entwicklung korrekter Programme in Coq. Thomas Strathmann

Entwicklung korrekter Programme in Coq. Thomas Strathmann Entwicklung korrekter Programme in Coq Thomas Strathmann Überblick Teil 1 Was ist Coq? Theoretische Grundlagen Programmierung, Spezifikation, Beweise in

Mehr

Funktionale Programmierung

Funktionale Programmierung Funktionale Programmierung Jörg Kreiker Uni Kassel und SMA Solar Technology AG Wintersemester 2011/2012 2 Teil II Typen mit Werten und Ausdruck, sogar listenweise 3 Haskell Programme Programm Module ein

Mehr

Funktionale Programmiersprachen

Funktionale Programmiersprachen Funktionale Programmiersprachen An den Beispielen Haskell und Erlang Übersicht Programmiersprachen λ-kalkül Syntax, Definitionen Besonderheiten von funktionalen Programmiersprache, bzw. Haskell Objektorientierte

Mehr

Programmieren in Haskell Einstieg in Haskell

Programmieren 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

Mehr

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN. Name Vorname Studiengang Matrikelnummer. Hörsaal Reihe Sitzplatz Unterschrift

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN. Name Vorname Studiengang Matrikelnummer. Hörsaal Reihe Sitzplatz Unterschrift TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2008/09 Einführung in die Informatik 2 Klausur Prof. Dr. Helmut Seidl, T. M. Gawlitza, S. Pott,

Mehr

Programmieren in Haskell

Programmieren 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

Mehr

Funktionale Programmierung mit Haskell

Funktionale Programmierung mit Haskell Funktionale Programmierung mit Haskell Dr. Michael Savorić Hohenstaufen-Gymnasium (HSG) Kaiserslautern Version 20120622 Überblick Wichtige Eigenschaften Einführungsbeispiele Listenerzeugung und Beispiel

Mehr

Programmieren in Haskell

Programmieren 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

Mehr

Introduction to Python. Introduction. First Steps in Python. pseudo random numbers. May 2016

Introduction to Python. Introduction. First Steps in Python. pseudo random numbers. May 2016 to to May 2016 to What is Programming? All computers are stupid. All computers are deterministic. You have to tell the computer what to do. You can tell the computer in any (programming) language) you

Mehr

WS 2011/2012. Georg Sauthoff 1. October 18, 2011

WS 2011/2012. Georg Sauthoff 1. October 18, 2011 in in WS 2011/2012 Georg 1 AG Praktische Informatik October 18, 2011 1 [email protected] Neue Übungsgruppen in neue Übungsgruppen neue Tutoren Sprechstunden in GZI-Arbeitsraum (V2-240)

Mehr

Multiparadigmen- Programmiersprachen

Multiparadigmen- Programmiersprachen Multiparadigmen- Programmiersprachen Martin Grabmüller [email protected] Fachgebiet Übersetzerbau und Programmiersprachen Fakultät IV Elektrotechnik und Informatik Technische Universität Berlin Multiparadigmen-Programmiersprachen

Mehr

Programmierkurs II. Einführung in die deklarative Programmiersprache HASKELL

Programmierkurs II. Einführung in die deklarative Programmiersprache HASKELL Programmierkurs II Einführung in die deklarative Programmiersprache HASKELL Name: Dr. Johannes Fuchs Tel.: 07531/88-2879 Office: D 214 E-mail: [email protected] Name: Leonard Wörteler Tel.:

Mehr

Was bisher geschah Funktionale Programmierung in Haskell: Algebraische Datentypen Pattern Matching Polymorphie Typklassen Rekursive Datentypen:

Was bisher geschah Funktionale Programmierung in Haskell: Algebraische Datentypen Pattern Matching Polymorphie Typklassen Rekursive Datentypen: Was bisher geschah Funktionale Programmierung in Haskell: Algebraische Datentypen Pattern Matching Polymorphie Typklassen Rekursive Datentypen: Peano-Zahlen, Listen, Bäume Rekursive Funktionen strukturelle

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Vorlesung 5: Invarianten und Logik Erinnerung: Verträge In Verbindung mit einem Feature: Vorbedingungen Nachbedingungen

Mehr

Funktionales Programmieren in Python

Funktionales Programmieren in Python Wintersemester 2008/2009 1 Funktionen sind Objekte 2 lambda Funktionen 3 apply 4 map 5 zip 6 filter 7 reduce 8 List Comprehension Funktionales Programmieren Wer nicht funktional programmiert, programmiert

Mehr

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8 Java 8 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Oktober 2014 JAV8 5 Java 8 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

Funktionale Programmierung mit Haskell. Jan Hermanns

Funktionale Programmierung mit Haskell. Jan Hermanns Funktionale Programmierung mit Haskell Jan Hermanns 1 Programmiersprachen imperativ deklarativ konventionell OO logisch funktional Fortran Smalltalk Prolog Lisp C Eiffel ML Pascal Java Haskell 2 von Neumann

Mehr

2.5 Listen. Kurzschreibweise: [42; 0; 16] Listen werden mithilfe von [] und :: konstruiert.

2.5 Listen. Kurzschreibweise: [42; 0; 16] Listen werden mithilfe von [] und :: konstruiert. 2.5 Listen Listen werden mithilfe von [] und :: konstruiert. Kurzschreibweise: [42; 0; 16] # let mt = [];; val mt : a list = [] # let l1 = 1::mt;; val l1 : int list = [1] # let l = [1;2;3];; val l : int

Mehr

Grundlagen der Programmierung 2. Operationale Semantik

Grundlagen der Programmierung 2. Operationale Semantik Grundlagen der Programmierung 2 Operationale Semantik Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 29. April 2009 Semantik von Programmiersprachen Semantik = Bedeutung

Mehr

Unendliche Listen und Bäume

Unendliche Listen und Bäume Funktionale Programmierung Unendliche Listen und Bäume Helga Karafiat, Steffen Rüther Übersicht Grundlage: Lazy Evaluation Konstruktion von unendlichen Strukturen Verwendung von unendlichen Listen Unendliche

Mehr

Ich liebe Java && Ich liebe C# Rolf Borst

Ich liebe Java && Ich liebe C# Rolf Borst Ich liebe Java && Ich liebe C# Rolf Borst Java oder C#? Einführung public class Einfuehrung { private int gesamtzahl = 0; /* Ermittelt die Anzahl der geraden und durch drei teilbaren Zahlen */ public String

Mehr

Ströme als unendliche Listen in Haskell

Ströme als unendliche Listen in Haskell Ströme als unendliche Listen in Haskell Strom := Folge oder Liste von Daten, unbegrenzt viele Daten-Elemente. Ströme sind in Haskell als als (potentiell) unendliche Listen darstellbar und programmierbar

Mehr

Listen und Listenfunktionen. Grundlagen der Programmierung 2 A (Listen) Listen und Listenfunktionen. Listen? Haskell: Listen

Listen 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

Mehr

Verarbeitung 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: 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 =

Mehr

Mathematik für Informatiker I Mitschrift zur Vorlesung vom 14.12.2004

Mathematik für Informatiker I Mitschrift zur Vorlesung vom 14.12.2004 Mathematik für Informatiker I Mitschrift zur Vorlesung vom 14.12.2004 In der letzten Vorlesung haben wir gesehen, wie man die einzelnen Zahlenbereiche aufbaut. Uns fehlen nur noch die reellen Zahlen (siehe

Mehr

ALP I Einführung in Haskell

ALP I Einführung in Haskell ALP I Einführung in Haskell WS 2012/2013 Was ist Haskell? Haskell ist eine rein Funktionale Programmiersprache mit einer nach Bedarf Auswertung-Strategie oder "Lazy Evaluation". Was bedeutet rein funktional?

Mehr

Funktionale Programmierung mit C++

Funktionale Programmierung mit C++ Funktionale Programmierung mit C++ Rainer Grimm Softwarearchitekt Partner: Überblick Programmierung in funktionaler Art Warum funktionale Programmierung? Was ist funktionale Programmierung? Charakteristiken

Mehr

Methoden und Funktionen in Scala

Methoden und Funktionen in Scala Methoden und Funktionen in Scala Kapitel 11 und 12 des Buches 1 Jede Methode hat einen Typ Für die folgende Methode def square(v: Int) = v*v erhalten wir von der Scala-Shell die Rückmeldung square: (Int)Int

Mehr

Grundprinzipien der funktionalen Programmierung

Grundprinzipien der funktionalen Programmierung Grundprinzipien der funktionalen Programmierung Funktionen haben keine Seiteneffekte Eine Funktion berechnet einen Ausgabewert der nur von den Eingabewerten abhängt: 12 inputs + output 46 34 2 Nicht nur

Mehr

Bru ckenkurs Programmieren

Bru ckenkurs Programmieren Bru ckenkurs Programmieren Tag 1: Variablen und Verzweigungen Jakob Czekansky Technische Hochschule Mittelhessen 26. September 2016 Inhalt Organisatorisches Einleitung: Was ist Programmieren? Hello World

Mehr

Einführung IMP-Syntax Reduktionssemantik Maschinen-Semantik. Teil IV. Semantik imperativer Sprachen

Einführung IMP-Syntax Reduktionssemantik Maschinen-Semantik. Teil IV. Semantik imperativer Sprachen Teil IV Semantik imperativer Sprachen 201 1. Einführung Alternativen zur Beschreibung der Semantik: natürliche Sprache (bisher, unpräzise) operational Reduktionssemantik (vgl. Haskell-Semantik in Kap.

Mehr

Einführung in die Informatik 2

Einfü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

Mehr

Inferenzmethoden. Einheit 18. Logik höherer Stufe

Inferenzmethoden. Einheit 18. Logik höherer Stufe Inferenzmethoden Einheit 18 Logik höherer Stufe 1. Syntax und Semantik 2. Simulation mathematischer Konstrukte 3. Beweisführung in Logik höherer Stufe Logik höherer Stufe Logik erster Stufe hat nur einfache

Mehr

Prüfung Funktionale Programmierung

Prü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

Mehr

Praktische Informatik 3: Funktionale Programmierung Vorlesung 2 vom : Funktionen und Datentypen

Praktische Informatik 3: Funktionale Programmierung Vorlesung 2 vom : Funktionen und Datentypen Rev. 1843 1 [35] Praktische Informatik 3: Funktionale Programmierung Vorlesung 2 vom 23.10.2012: Funktionen und Datentypen Christoph Lüth Universität Bremen Wintersemester 2012/13 2 [35] Fahrplan Teil

Mehr

FachPraktikum 1590 Erweiterbare Datenbanksysteme. Aufgaben Phase 1

FachPraktikum 1590 Erweiterbare Datenbanksysteme. Aufgaben Phase 1 FachPraktikum 1590 Erweiterbare Datenbanksysteme Aufgaben Phase 1 Wintersemester 2004/2005 Ralf Hartmut Güting, Dirk Ansorge, Thomas Behr, Markus Spiekermann Praktische Informatik IV, Fernuniversität Hagen

Mehr

Prolog Tutorial Norbert E. Fuchs Institut für Informatik Universität Zürich

Prolog Tutorial Norbert E. Fuchs Institut für Informatik Universität Zürich Prolog Tutorial Norbert E. Fuchs Institut für Informatik Universität Zürich Inhalt Vom deklarativen Wissen zum prozeduralen Programm Vom Programm zur Berechnung Elemente eines Prolog-Programms Zugverbindungen

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 3. Grunddatentypen, Ausdrücke und Variable 1 Kapitel 3 Grunddatentypen, Ausdrücke und Variable 2 Eine Datenstruktur besteht aus Grunddatentypen in Java einer Menge von Daten (Werten) charakteristischen Operationen Datenstrukturen werden mit einem

Mehr

Deklarative Programmierung

Deklarative Programmierung Deklarative Programmierung Prof. Dr. Sibylle Schwarz Westsächsische Hochschule Zwickau Dr. Friedrichs-Ring 2a, RII 263 http://www.fh-zwickau.de/~sibsc/ [email protected] WS 2012/2013 1 Motivation...

Mehr

Einführung in die funktionale Programmierung

Einführung in die funktionale Programmierung Einführung in die funktionale Programmierung Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 28. Oktober 2008 Einführung in Haskell: Syntax, Reduktionen, Kernsprachen Haskell,

Mehr