HackerTube
HomeLongsLikedHistoryWatch laterCategoriesPlaylistsSettings

Edwin Brady - Idris 2 - Type-driven Development of Idris

Curry On!4 HN recommenders · recommended in 4 months, 2019-2023
YouTube
19K views · 7 years ago · talk · evergreen

Edwin Brady, creator of Idris, presents Idris 2 and demonstrates type-driven development, where the compiler assists by filling holes and suggesting implementations from types.

Recommended as the best demo of interactive, compiler-assisted dependently typed programming in action.

Programming language designFunctional programmingLogic & formal methods#idris2#type-drivendevelopment#dependenttypes#edwinbrady#interactiveprogramming

5 comments from Hacker News

@adamgordonbell2023 · in “Idris: A Language for Type-Driven Development”

The guessing the implementation part is pretty cool. You can find videos of Edwin Brady showing it off on youtube: ▶ this video The book also walks you through lots of examples. The key part is the type needs to constrain the possible implementations down quite a bit.

RecommendsView on HN
@pjmlp2022 · in “It's not what programming languages do, it's what they shepherd you to (2020)”

Not quite what you mean, but still, you might find interesting the talks on how to approach coding in languages like Idris, where the compiler is able to support the editor in type suggestions. ▶ this video

RecommendsView on HN
@valenterry2021 · in “Immutability is not enough (2016)”

> Right, but then you can't multi-thread merge() Not sure If I understand what you mean. It would be both possible to call "merge" in parallel or to implement merge to do the work in parallel as well. > Or else, you say that it's immutable, and when some thread changes the state, it produces a new map3, and the old one doesn't change. But then you have the problem of getting all the other threads updated to see the new version of map3. Yes, but this "problem" is exactly the beauty of this style of programming. It forces you to make your data-flows explicit and hence easy to discover, understand and manipulate/change by other developers. > And, by the way, I've worked on that router for TV stations. Modeling that matrix in a way that invalid states are unrepresentable is, um, extremely non-trivial... I'm not saying it is trivial. But it is possible and depending on the programming language it is actually surprisingly easy. Not only that, with a good typesystem, you not only prevent invalid state from occurring, you even get a lot of support from your IDE due to the extra information it has. Here's an example how that can look like for matrices and functions to manipulate them (like transpose): ▶ this video The syntax might be alien to you, but I hope it still shows what's possible at compile-time before even running the program with modern languages today.

CitesView on HN
@lapinot2020 · in “CLUI: Building a Graphical Command Line”

I really like the general idea of bridging the gap between graphical and text-based interfaces, abstracting away the differences and be able to use a mixture of both. In the realm of interactive programming (eg heavily ide assisted), people with some functional and statically typed programming background would be interested in this magnificent talk about idris2: [Edwin Brady - Idris 2 - Type-driven Development of Idris] ▶ this video

Strongly recommendsView on HN
@chongli2019 · in “Dependent Haskell Is the Future (2018)”

Every single one of your claims is addressed by the programming language Idris [1], which has dependent types. This is not to say that Idris is the only dependently typed language which solves these issues, only that it exists as a counterexample to your claims. 1. Idris does not have type inference at the top level, but it does infer types within the body of functions. It can even disambiguate identically-named functions with different types, something Haskell cannot do. Moreover, Idris (and other dependently typed languages) can perform implementation inference , something which is much more powerful and useful to the programmer than type inference. It lets you work interactively with the Idris compiler whereby you specify a type and Idris creates a skeleton of the function for you, filled with holes that you replace with expressions. You can ask Idris what the type of a hole is and it will helpfully tell you the types of all other identifiers in scope. You can even ask Idris to attempt to fill in the hole for you, something it can usually do when there is only one possible expression with that type (occurs extremely often in practice). Watch Edwin Brady's demo of Idris 2 [2] to see this form of interactive development in action. Note that although Idris 2 isn't finished yet, a great deal of these examples (such as zip) work in Idris 1.3.2 (the current release). 2. Idris lets you specify your program gradually. When problems arise, you can refine your types and Idris will g

RecommendsView on HN
Edwin Brady - Idris 2: Type-driven development of Idris | Code Mesh LDN 1843:23

Edwin Brady - Idris 2: Type-driven development of Idris | Code Mesh LDN 18

Code Sync
20K views • 7 years ago
Type-Driven Development in Idris — Edwin Brady46:36

Type-Driven Development in Idris — Edwin Brady

Scala World
26K views • 11 years ago
"A Little Taste of Dependent Types" by David Christiansen38:36

"A Little Taste of Dependent Types" by David Christiansen

Strange Loop Conference
48K views • 8 years ago
"Type-Driven Program Synthesis" by Nadia Polikarpova39:40

"Type-Driven Program Synthesis" by Nadia Polikarpova

Strange Loop Conference
15K views • 8 years ago
Edward Kmett - Type Classes vs. the World1:42:53

Edward Kmett - Type Classes vs. the World

Boston Haskell
36K views • 11 years ago
Domain Modeling Made Functional - Scott Wlaschin - KanDDDinsky 201950:49

Domain Modeling Made Functional - Scott Wlaschin - KanDDDinsky 2019

KanDDDinsky
74K views • 6 years ago
ElixirConf 2023 - José Valim - The foundations of the Elixir type system1:11:42

ElixirConf 2023 - José Valim - The foundations of the Elixir type system

ElixirConf
38K views • 3 years ago
Effective Programs - 10 Years of Clojure - Rich Hickey1:14:52

Effective Programs - 10 Years of Clojure - Rich Hickey

ClojureTV
176K views • 9 years ago
Over the Shoulder 1 - Text Preprocessing in Forth1:06:26

Over the Shoulder 1 - Text Preprocessing in Forth

Andreas Wagner
25K views • 12 years ago
Bringing Types to Elixir by Giuseppe Castagna and Guillaume Duboc | ElixirConf EU 202340:15

Bringing Types to Elixir by Giuseppe Castagna and Guillaume Duboc | ElixirConf EU 2023

Code Sync
7K views • 3 years ago
Philip Wadler  - Propositions as Types (Lambda Days 2016)56:58

Philip Wadler - Propositions as Types (Lambda Days 2016)

Erlang Solutions
20K views • 10 years ago
Simon Peyton-Jones: Escape from the ivory tower: the Haskell journey1:04:16

Simon Peyton-Jones: Escape from the ivory tower: the Haskell journey

Churchill College, University of Cambridge
170K views • 9 years ago
The Algebra of Algebraic Data Types1:04:35

The Algebra of Algebraic Data Types

London Haskell
27K views • 13 years ago
Effective ML1:09:24

Effective ML

Jane Street
30K views • 10 years ago
Evan Czaplicki - Let's be mainstream! User focused design in Elm - Curry On58:23

Evan Czaplicki - Let's be mainstream! User focused design in Elm - Curry On

Curry On!
82K views • 11 years ago
The Next Five Years of ClojureScript - David Nolen1:00:58

The Next Five Years of ClojureScript - David Nolen

Metosin
19K views • 10 years ago
Stanford Seminar - Concatenative Programming: From Ivory to Metal1:04:45

Stanford Seminar - Concatenative Programming: From Ivory to Metal

Stanford Online
14K views • 8 years ago
"Propositions as Types" by Philip Wadler42:43

"Propositions as Types" by Philip Wadler

Strange Loop Conference
143K views • 11 years ago
Practical Common Lisp1:12:10

Practical Common Lisp

Google TechTalks
98K views • 19 years ago
Clojure for Lisp Programmers Part 1 - Rich Hickey1:28:59

Clojure for Lisp Programmers Part 1 - Rich Hickey

ClojureTV
25K views • 13 years ago