1. The Idris 2 Programming Langauge
  2. Core Language Features
  3. Introduction
    1. About The Idris Programming Language
    2. Using the REPL
    3. A First Idris Program
    4. The Shape of an Idris Definition
    5. Where to Get Help
    6. Conclusion
  4. Introduction To Functions
    1. Functions With More Than One Argument
    2. Function Composition
    3. Higher Order Functions
    4. Currying
    5. Anonymous Functions
    6. Operators
    7. Introductory Function Exercises
    8. Conclusion
  5. Algebraic Data Types
    1. Enumerations
    2. Exercises
    3. Sum Types
    4. Exercises
    5. Records
    6. Exercises
    7. Generic Data Types
    8. Exercises
    9. Alternative Syntax for Data Definitions
    10. Conclusion
  6. Interfaces
    1. Interface Basics
    2. Exercises
    3. More About Interfaces
    4. Exercises
    5. Interfaces in the Prelude
    6. Exercises
    7. Conclusion
  7. Functions Part 2
    1. Let Bindings and Local Definitions
    2. Exercises
    3. The Truth about Function Arguments
    4. Programming with Holes
    5. Conclusion
  8. Dependent Types
    1. Length-Indexed Lists
    2. Exercises
    3. Fin: Safe Indexing Into Vectors
    4. Exercises
    5. Compile-Time Computations
    6. Exercises
    7. Conclusion
  9. IO: Programming with Side Effects
    1. Pure Side Effects?
    2. Exercises
    3. Do Blocks, Desugared
    4. Exercises
    5. Working With Files
    6. Exercises
    7. How IO is Implemented
    8. Conclusion
  10. Functor and Friends
    1. Functor
    2. Exercises
    3. Applicative
    4. Exercises
    5. Monad
    6. Exercises
    7. Background and further Reading
    8. Conclusion
  11. Recursion and Folds
    1. Recursion
    2. Exercises
    3. Notes on Totality Checking
    4. Exercises
    5. Interface Foldable
    6. Exercises
    7. Conclusion
  12. Effectful Traversals
    1. Reading CSV Tables
    2. Exercises
    3. Programming with State
    4. Exercises
    5. The Power of Composition
    6. Exercises
    7. Conclusion
  13. Sigma Types
    1. Dependent Pairs
    2. Exercises
    3. Use Case: Nucleic Acids
    4. Exercises
    5. Use Case: CSV Files with a Schema
    6. Exercises
    7. Conclusion
  14. Propositional Equality
    1. Equality as a Type
    2. Exercises
    3. Programs as Proofs
    4. Exercises
    5. Into the Void
    6. Exercises
    7. Rewrite Rules
    8. Exercises
    9. Conclusion
  15. Predicates and Proof Search
    1. Preconditions
    2. Exercises
    3. Contracts between Values
    4. Exercises
    5. Use Case: Flexible Error Handling
    6. Exercises
    7. The Truth about Interfaces
    8. Conclusion
  16. Primitives
    1. How Primitives are Implemented
    2. Working with Strings
    3. Exercises
    4. Integers
    5. Exercises
    6. Refined Primitives
    7. Exercises
  17. Appendices
  18. Getting Started with pack and Idris 2
  19. Interactive Editing in Neovim
  20. Structuring Idris Projects
  21. A Deep Dive into Quantitative Type Theory
  22. Exercise Solutions
  23. Introductory Function Exercises
  24. Algebraic Data Types
  25. Interfaces
  26. Functions Part 2
  27. Dependent Types
  28. IO: Programming with Side Effects
  29. Functor and Friends
  30. Recursion and Folds
  31. Effectful Traversals
  32. Sigma Types
  33. Propositional Equality
  34. Predicates and Proof Search
  35. Primitives