FreeCourseWeb.com

Everyday Optics

Navigate optics with awareness and skill

Optics should be used, but they should be used with awareness.

What you’ll learn

Course Content

Requirements

Optics should be used, but they should be used with awareness.

Optics allow us to read and modify parts of different data structures, such as fields of records, variants of unions, or elements of containers.

This course is not a generic overview of optics — instead, we’ll focus on why optics are fantastic, when to use them, when not to use them, and how to use them in the production code.

Most people either fear and avoid them or love them so much that they use them for everything. We’re going to cover the most common ways of using optics:

This course will review optics, cover the most popular encodings, the problems optics solve, naming conventions, concrete libraries, and techniques. We’ll also learn how to use optics to work with JSON. But we’ll not discuss who will win in a fight: Joker from profunctors or Twan van Laarhoven.

This course is for people who:

This course is not for people who:

Throughout the course, we’re going to cover a few libraries:

We expect that you are familiar with Haskell and a few extensions, such as OverloadedStrings.

We’ll use DataKinds, DeriveGeneric, DuplicateRecordFields, FlexibleContexts, FunctionalDependencies, NamedFieldPuns, OverloadedLabels, RecordWildCards, TemplateHaskell, TypeApplications, and a few others.

We’ll give a one-two sentence explanation when we enable each extension or dive deeper when it’s crucial. So you don’t have to know them in advance for this course. But if you want to — see our course on extensions.

Get Tutorial