Scala Language - Functional Programming

Classroom Schulung | Deutsch | Anspruch

Schulungsdauer: 2 Tage

Ziele

Ein zentrales Designziel der Programmiersprache Scala ist die Verschmelzung des objektorientierten und des funktionalen Programmierparadigmas in einer Sprache. Scala erzwingt die funktionale Programmierung nicht (anders als Haskell), aber es stellt dem Entwickler/innen alle Werkzeuge und Hilfsmittel zur Verfügung.

Dieser Kurs legt den Fokus auf die Konzepte der reinen funktionalen Programmierung. Dabei geht es nicht nur um sog. Lambda-Ausdrücke, die auch in anderen Programmiersprachen unterstützt werden, sondern insbesondere um die funktionalen Eigenschaften: Immutability und Referential Transparency. In diesem Kurs stehen die funktionalen Konzepte im Mittelpunkt, nicht funktionale Frameworks wie Scalaz, Cats oder ZIO. Er bietet aber die Verständnisgrundlagen, um sich anschließend mit den genannten funktionalen Frameworks näher zu beschäftigen.

Am Ende des Seminars verstehen die Teilnehmer/innen die Konzepte der reinen funktionalen Programmierung sowie deren Vor- und Nachteile. Sie können diese Konzepte in praktischen Anwendungsprogrammen einsetzen. Sie verstehen, wie funktionale Konzepte das Design eines Anwendungsprogramms verändern.

Zielgruppe

Software-Entwickler/innen mit soliden Kenntnissen der Sprache Scala und der Scala-Standardbibliothek

Voraussetzungen

Kenntnis der Inhalte des Kurses "Scala Language - Basics II" oder gleichwertige Kenntnisse

Agenda

  • What is Lambda Calculus?
  • Functions (Lambda Expressions) in Java and Scala
  • Function0, Function1, Function2, ... Function22
  • Syntactic Sugar for Functions
  • Function Types
  • Eta Expansion
  • Higher Order Functions
  • Functions are Data
  • Currying
  • Manipulating a List of Functions
  • Immutability and Referential Transparency
  • The Problem with Future (from Scala Standard Library)
  • Function Composition
  • Type Classes
  • Categories - What are they and what are they good for?
  • Semigroup and Monoid (self-implemented)
  • Higher Kinded Types
  • Functor, Applicative and Monad (self-implemented)
  • Monad instances for List, Option, Either and Id
  • Reader Monad
  • IO Monad

Ziele

Ein zentrales Designziel der Programmiersprache Scala ist die Verschmelzung des objektorientierten und des funktionalen Programmierparadigmas in einer Sprache. Scala erzwingt die funktionale Programmierung nicht (anders als Haskell), aber es stellt dem Entwickler/innen alle Werkzeuge und Hilfsmittel zur Verfügung.

Dieser Kurs legt den Fokus auf die Konzepte der reinen funktionalen Programmierung. Dabei geht es nicht nur um sog. Lambda-Ausdrücke, die auch in anderen Programmiersprachen unterstützt werden, sondern insbesondere um die funktionalen Eigenschaften: Immutability und Referential Transparency. In diesem Kurs stehen die funktionalen Konzepte im Mittelpunkt, nicht funktionale Frameworks wie Scalaz, Cats oder ZIO. Er bietet aber die Verständnisgrundlagen, um sich anschließend mit den genannten funktionalen Frameworks näher zu beschäftigen.

Am Ende des Seminars verstehen die Teilnehmer/innen die Konzepte der reinen funktionalen Programmierung sowie deren Vor- und Nachteile. Sie können diese Konzepte in praktischen Anwendungsprogrammen einsetzen. Sie verstehen, wie funktionale Konzepte das Design eines Anwendungsprogramms verändern.

Zielgruppe

Software-Entwickler/innen mit soliden Kenntnissen der Sprache Scala und der Scala-Standardbibliothek

Voraussetzungen

Kenntnis der Inhalte des Kurses "Scala Language - Basics II" oder gleichwertige Kenntnisse

Agenda

  • What is Lambda Calculus?
  • Functions (Lambda Expressions) in Java and Scala
  • Function0, Function1, Function2, ... Function22
  • Syntactic Sugar for Functions
  • Function Types
  • Eta Expansion
  • Higher Order Functions
  • Functions are Data
  • Currying
  • Manipulating a List of Functions
  • Immutability and Referential Transparency
  • The Problem with Future (from Scala Standard Library)
  • Function Composition
  • Type Classes
  • Categories - What are they and what are they good for?
  • Semigroup and Monoid (self-implemented)
  • Higher Kinded Types
  • Functor, Applicative and Monad (self-implemented)
  • Monad instances for List, Option, Either and Id
  • Reader Monad
  • IO Monad

Dieser Lerninhalt wird in folgenden Lernplänen verwendet

Tags

Diese Seite weiterempfehlen