Learn Functional Programming in Kotlin in this intensive online course brought to you by 47 Degrees Academy and led by Jorge Castillo.


Functional Programming Fundamentals in Kotlin with Arrow

In this intensive two-day course, we’ll cover Functional Programming essentials in Kotlin. By the end of this course, you will have a solid grasp on the Fundamentals of the language.

Course content

Lesson 1: Functional Programming

Functional programming essentials.​

  • Fundamentals of FP. What is it, what is it good for.
  • Purity, referential transparency, substitution model.
  • Side effects.
  • Higher order functions.
Lesson 2: Domain Modeling and ADTs

Modeling your program’s data through the concept of Algebraic Data Types.

  • Kotlin type system and its impact on how compiler understands code.
  • Algebraic Data Types.
  • Modeling program choices by ADTs.
  • The Nothing bottom type and inference.
  • Kotlin standard library product types.
  • Arrow product and sum types.
  • Arrow Coproducts.
  • Arrow Union types (powered by Arrow Meta).
  • Refined types (powered by Arrow Meta).
Lesson 3: Immutable Data and Optics

How to optimize reusability and composition for immutable data structures using Optics.

  • Understanding optics as a path for reading / modification.
  • How optics improve Kotlin standard library copy syntax.
  • Going over all the available types of optics.
  • Optics composition and reusability.
Lesson 4: Error-Handling and Data Validation​

Learning how to handle errors in our programs.

  • Option datatype.
  • Either datatype.
  • Computational bias: Having a happy path in our types.
  • Fail fast vs error accumulation strategies.
  • ValidatedNel as a mean to accumulate errors.
  • How to handle errors on concurrent contexts? 👇
Lesson 5: Diving into Suspend
  • suspend from Kotlin stdlib, what it represents, how it works.
  • What does suspend translate to at compile time (CPS).
  • How we leverage that with Arrow Fx Coroutines.
  • The power of delimited continuations, “the mother of all monads”.
  • Equivalence between wrapped approaches and Kotlin suspend.
  • Removing the need for IO wrappers.
  • suspend as a mean to track side effects at compile time.
Lesson 6: Arrow Fx Coroutines
  • A pure functional implementation of Kotlin suspend system.
  • Handling errors in concurrent contexts by leveraging suspend + Either.
  • Concurrency solved by Arrow Fx Coroutines operators.
  • Collaborative cancellation checked by all operators.
  • Cancellable effects.
  • Evaluating effects on arbitrary contexts.
  • Fibers as lightweight threads: ForkAndForget / ForkConnected / ForkScoped.
  • Concurrent resource safety.
  • Handling concurrent mutable state.
  • parallelization operators.
  • Traversing effects.
  • Racing effects.
  • Reusable and highly composable retry & repeat strategies.
Lesson 7: Resource Safety
  • Resource
  • Bracket
Lesson 8: Functional Streams
  • Lightweight streams.
  • Pull based - key differences vs other known streaming libraries.
  • Built-in backpressure.
  • Chunk based streams.
  • Embedded effects.
  • Stream interruption.
  • Queues.
  • Lightweight stream apis.
  • Safely streaming resources with automatic scoping.

  • $1100
  • -50%

Enroll for $550Starts on July 21 at 9 am CET

Company and Private Group Training


Jorge Castillo

Jorge Castillo

Senior Software Engineer


  • Kotlin
  • Functional Programming Essentials
  • Type classes
  • Error Handling
  • Output

This Instructor-Led Course includes:

  • Maximum Class Size of 15
  • Access to Academy EduTools Platform
  • Access to Course Materials
  • Certificate of Completion
  • Access to the Academy Slack


  • One year of experience using Kotlin or similar Functional Programming-oriented languages

Upcoming Academy Events

Frequently Asked Questions

Is this course 100% online?


How do I register interest for a course with no start date or future training dates?

You can join the Academy newsletter to stay posted about upcoming courses and events.

What if I can’t find a course?

Please email your thoughts and suggestions to academy@47deg.com, and we’ll get back to you as soon as possible.

Will I receive accreditation for a course?

For any paid training courses, we intend to launch an accreditation process after the launch of Academy. If you take a paid training course before this time, we’ll make sure to send an accreditation when we’re ready.

What tools do I need to access 47 Degrees Academy content?

The only thing you need is a modern web browser and Internet connection. For training courses with code workshops or downloadable code samples, the course specifics will include the necessary tools and instructions to get going.

Will I earn university credit for completing any training?

No, at this time, the courses are not intended to replace university or other formal education courses. If you are an academic or training institution with an interest in partnering or licensing content from Academy, please get in touch at academy@47deg.com.

What languages will the training be given in?

English is the common language across 47 Degrees. If you have an interest in supporting other languages, please let us know at academy@47deg.com.

Is financial aid available for underrepresented or low-income groups?

Our industry is not diverse enough across many measures of representation. Nor is it easily accessible to many minorities or those in low-income scenarios. If you feel that you belong to an underrepresented minority or need help financially, please fill this form. We can apply a course voucher to your registered Academy account. The voucher can be redeemed against any paid course on a one-time basis. The voucher is non-transferable, non-refundable, and has no financial value.

What is the refund policy?

If you request a refund for a paid training course before taking it, we will refund your course fee during our next processing cycle. If you request a refund for a paid training course after starting or accessing it, please email us at academy@47deg.com. Please refer to the full Terms and Conditions before requesting a refund. 47 Degrees reserves the right to refuse refunds.

Are these courses qualified for the FUNDAE (Fundación Tripartita)?

Part of the course cost is reimbursable for companies located in Spain, through Fundae ( formerly, Fundación Tripartita ). If this is your case, please contact us through academy@47deg.com before enrolling in a course.

Do you have more questions? Contact us