Scala Language - Functional Programming

Classroom training | German | Claim

Duration of training: 2 days

Objectives

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.

Target audience

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

Requirements

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

Objectives

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.

Target audience

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

Requirements

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

This learning content is used in the following learning plans

Tags

Recommend this site