What to Leave Implicit
Offered By: Scala Days Conferences via YouTube
Course Description
Overview
Explore the intricacies of implicit programming in Scala through this keynote address delivered at Scala Days Chicago 2017. Delve into the three I's of Scala - Imports, Inheritance, and Implicits - with a particular focus on the central yet controversial role of implicits. Examine the various aspects of implicits, including their current implementation and potential future developments. Analyze the benefits and challenges associated with implicit programming, covering design principles, implementation strategies, and ergonomic considerations. Learn about implicit classes, extension methods, late trait implementation, and implicit parameters. Discover how implicits can prove theorems, establish context, and implement type classes. Investigate proposed improvements such as lazy implicits, multiple implicit parameter lists, and implicit function types. Gain insights into coherence rules, parametricity, and efficiency considerations. Explore practical applications through examples like the Reader Monad and the Builder Pattern, enhancing your understanding of advanced Scala programming concepts.
Syllabus
Intro
Traditional ways to express context
The Functional Way
Functional is Good
Ground Rules
Implicit Classes
Reasoning Footprint of Implicitness
Extension Methods
Late Tralt Implementation
What about simple conversions?
Anti Patterns
Implicit Parameters - Use Cases Implicit parameters can
Prove Theorems
Establish Context
Implement Type Classes
Tighten Rules for Implicit Conversions
Lazy Implicits
Multiple Implicit Parameter Lists
Coherence Rules Out Ambiguities
Parametricity
Implicit Function Types
Towards a solution
Two Rules for Typing
Revised Example
Efficiency
The Reader Monad
An encore: The Builder Pattern
Scala Implementation
Taught by
Scala Days Conferences
Related Courses
Software as a ServiceUniversity of California, Berkeley via Coursera Software Testing
University of Utah via Udacity The Hardware/Software Interface
University of Washington via Coursera Software Debugging
Saarland University via Udacity Introduction to Systematic Program Design - Part 1
The University of British Columbia via Coursera