Berlin Functional Programming Group
Berlin Functional Programming Group
  • 34
  • 104 769
John De Goes is Programming Without Type Classes
Type classes have become a cornerstone of statically-typed functional programming, powering abstractions like monoid and monad. Yet, type classes often have generalized names, which don’t reflect their purpose in specific domains; and they incur higher learning costs, especially when emulated in languages without them.
In this presentation, John De Goes discusses the pros and cons of using type classes, and presents a systematic method for building powerful functional components that do not require type classes. Attendees will learn how to preserve the benefits of principled, algebraic functional programming, without forcing type classes on coworkers or users.
A mathematician by training but a software engineer by vocation, John A. De Goes has been professionally writing software for more than 25 years. John has contributed to dozens of open source projects written in functional programming languages, including ZIO, a library for asynchronous and concurrent programming in functional Scala. In addition to speaking at Strata, OSCON, BigData TechCon, NEScala, ScalaWorld, Scala IO, flatMap, Scalar Conf, LambdaConf, and many other conferences, John also published a variety of books on programming. Currently, John heads Ziverge Inc, a company committed to solving hard business problems using the power of functional programming.
This virtual talk was brought to you by the Berlin Functional Programming Group.
Join us on Meetup: www.meetup.com/Berlin-Functional-Programming-Group/
Follow us on Twitter: BerlinFPGroup
Buy a T-shirt: teespring.com/berlin-fp-group
Support us on Patreon: www.patreon.com/bfpg
Переглядів: 6 567

Відео

Scala on Android
Переглядів 8933 роки тому
With Maciek Gorywoda From Maciej: "For almost four years now, I have worked professionally on the Android client of an end-to-end encrypted messenger, in Scala. In Android, we deal a lot with events coming from many sources: the user, the backend, the Android OS itself… The code we write has to be very reactive-and it should also be concise and able to process all those events concurrently to s...
"Why Nix Shorts" starring Justin Woo
Переглядів 6643 роки тому
A talk about why Justin made his "Nix Shorts" series of small notes about how to get started with Nix, and what he thinks about how "getting started" guides are made and what could make them more helpful. Justin is an Asian-American guy who is mostly known not for anything he has done with JS, PureScript, Nix, or Haskell, but really just because of some terrible memes on Twitter he doesn't make...
Deconstructing Lambdas-An Awkward Guide to Programming Without Functions
Переглядів 5 тис.3 роки тому
With Chris Penner! We'll explore how profunctors are a foundational computing tool by expressing many programming patterns using the profunctor class hierarchy and profunctor transformations (a.k.a. hypermorphisms, a generalization over profunctor optics). Chris Penner is a Haskell hobbyist and self-proclaimed incarnation of "Cunningham's Law". He enjoys writing and often blogs about Lenses, Re...
Safer Rust: Program Verification with Creusot
Переглядів 1,5 тис.3 роки тому
With Xavier Denis! Rust has shown how an advanced and strict type system can drastically reduce the complexity of systems programming: the borrow checker serves as both a programmer's worst foe and most loyal ally, preventing bugs along the way. But the type system of Rust only gets us so far-it does nothing to help us prove the functional correctness of our code. Xavier will show you how to ch...
A Horrified Haskeller's Descent into Python Gradual Static Typing
Переглядів 1,4 тис.3 роки тому
An FP Forum talk with Ben Clifford! Ben was a Haskell programmer, but changing projects he switched to a pre-existing, dynamically-typed Python codebase. Of course, he wanted some type checking in there, so he switched on some of Python's optional static typing features and had an adventure. Assuming you have some knowledge of more traditional functional type systems (e.g. Haskell), he'll give ...
Ways of Dealing with Partial Functions in Haskell
Переглядів 6953 роки тому
An FP Forum event with Philipp Zander! There is a "hierarchy of fragility" of ways of dealing with partial functions. One of the less fragile techniques is encoding preconditions using newtypes and smart constructors. This seems to break down when it comes to partial functions taking multiple arguments. Matt Noonan describes how to make this technique work even with functions taking multiple ar...
Daniel Bachler Wants You to Get Stuff Done with F#
Переглядів 2 тис.3 роки тому
F# is a statically-typed functional programming language that is very pragmatic in its conception and very useful for solving everyday problems. It has the usual, nice ML family language features like algebraic data types, curried functions with partial application, and immutable records and collections. But while using fold/reduce is often great, some algorithms are just a lot easier to write ...
Hillel Wayne is Designing Distributed Systems with TLA+
Переглядів 2,7 тис.3 роки тому
Distributed systems are hard. Even a few interacting agents can lead to tens of thousands or even millions of unique system states. At that scale, it’s impossible to test for, or even reason about, every possible edge case. We need better tools not just for building systems, but for understanding them. To truly understand distributed systems, we need to turn to software modeling, or “formal met...
ATS: Why Linear Types are the Future of Systems Programming
Переглядів 10 тис.3 роки тому
With Aditya "Deech" Siram! This talk will explore why ATS, a linearly typed ML for systems programming, should be the inspiration for the next generation of systems programming languages. It will cover: - Using linear types for completely type safe C level control over memory manipulation and allocation. - Interleaving theorem proving and dependent types to emulate Rust-like mutability guarante...
Alexander Granin Uses Free Monads in Real Production
Переглядів 2,4 тис.3 роки тому
Free monads have a very difficult path in the Haskell community. For a long time, it was considered that Free monads aren't that good: lack of performance, inability to work with exceptions, too complex theory behind them. But it turned out that it's all myths. Free monads, when used right, can be fast, simple, and provide additional power like exceptional exception handling. In this talk, Alex...
Garnishing Parsec With Parsley: A Staged Selective Parser Combinator Library
Переглядів 7263 роки тому
With Jamie Willis! Parser combinator libraries are a popular approach to writing parsers in the functional world. In particular, monadic parser combinators take centre stage. But when performance of these parser combinators become a concern, then monads prevent us from analysing and optimising our parsers effectively. Selective functors give a ray of hope to the combinator world by generating a...
Leverage the Power of Logic Programming With Souffle-haskell
Переглядів 1,8 тис.3 роки тому
With Luc Tielen! Souffle-haskell is a Haskell library that provides bindings for the Souffle language. Souffle is a Datalog variant that allows rapid prototyping of complex analyses in a high-level logic language. With souffle-haskell, it is now possible to combine the strengths of both Haskell and Datalog in order to solve complex problems easily. In this talk, Luc will start with a short intr...
Next-gen Haskell Compilation Techniques with Csaba Hruska
Переглядів 3,8 тис.3 роки тому
In the Haskell community, it is relatively well known how GHC compiles Haskell source code to machine code. The architecture of GHC is the result of 30 years of gradual development effort. But computing technology has changed a lot during this time. New ideas and compilation techniques have appeared on the scene that used to be infeasible either due to the lack of theoretical foundations or for...
Gabriel Gonzalez on Dhall: A Programmable Configuration Language
Переглядів 2,4 тис.4 роки тому
Dhall is a domain-specific language for reducing repetition in large configuration languages. Dhall is commonly adopted by people who place a premium on language security features (such as strong normalization, integrity checks, and restricted side effects), but Dhall can also be used as an embeddable and customizable programming language for small applications. The talk will begin by showing h...
Refactoring Reflected with Simon Thompson
Переглядів 5494 роки тому
Refactoring Reflected with Simon Thompson
Richard Eisenberg on Simplifying Constraint Solving in GHC
Переглядів 1,3 тис.4 роки тому
Richard Eisenberg on Simplifying Constraint Solving in GHC
An Adventure in Symbolic Execution with Gergő Érdi
Переглядів 5314 роки тому
An Adventure in Symbolic Execution with Gergő Érdi
Specifying and Testing Web Applications with Oskar Wickström's Quickstrom
Переглядів 6804 роки тому
Specifying and Testing Web Applications with Oskar Wickström's Quickstrom
FP Forum Online: Flavio Corpa, Torsten Scholak, and Richard Feldman
Переглядів 9 тис.4 роки тому
FP Forum Online: Flavio Corpa, Torsten Scholak, and Richard Feldman
Edwin Brady Tells Us What's New in Idris 2
Переглядів 6 тис.4 роки тому
Edwin Brady Tells Us What's New in Idris 2
Enumerate Your Data, or Enum Instances on Steroids
Переглядів 6804 роки тому
Enumerate Your Data, or Enum Instances on Steroids
How To Be an Effective Liar in Haskell
Переглядів 2 тис.4 роки тому
How To Be an Effective Liar in Haskell
Improving Developer Experience with Phoenix LiveDashboard starring Michael Crumm
Переглядів 5334 роки тому
Improving Developer Experience with Phoenix LiveDashboard starring Michael Crumm
Fight Complexity with Functional Programming! With Gopal Akshintala!
Переглядів 5104 роки тому
Fight Complexity with Functional Programming! With Gopal Akshintala!
Haskell for a New Decade with Stephen Diehl
Переглядів 9 тис.4 роки тому
Haskell for a New Decade with Stephen Diehl
Joe Kachmar Presents: Low-Level Programming in Haskell with Levity Polymorphism
Переглядів 1,7 тис.4 роки тому
Joe Kachmar Presents: Low-Level Programming in Haskell with Levity Polymorphism
A Universal Hostless Substrate: Full Stack Web Apps Without a Backend, and More!
Переглядів 7364 роки тому
A Universal Hostless Substrate: Full Stack Web Apps Without a Backend, and More!
A Totally Non-Terrifying, Practical Introduction to Type-Level Programming
Переглядів 6 тис.4 роки тому
A Totally Non-Terrifying, Practical Introduction to Type-Level Programming
Alejandro Serrano Mena on Why Functors and Applicatives Compose but Monads Don't
Переглядів 4,5 тис.4 роки тому
Alejandro Serrano Mena on Why Functors and Applicatives Compose but Monads Don't