Gentle Introduction to Dependent Types With Idris

Gentle Introduction to Dependent Types With Idris
Title Gentle Introduction to Dependent Types With Idris PDF eBook
Author Boro Sitnikovski
Publisher
Pages 130
Release 2018-09-07
Genre
ISBN 9781723139413

Download Gentle Introduction to Dependent Types With Idris Book in PDF, Epub and Kindle

Dependent types are a powerful concept that allow us to write proof-carrying code. Idris is a programming language that supports dependent types. We will learn about the mathematical foundations, and then write correct software and mathematically prove properties about it.This book aims to be accessible to novices, and no prior experience beyond high school mathematics is needed. Thus, this book is written in a way to be self-contained.The first part of this book serves as an introduction to the theory behind Idris, while the second part is a practical introduction to Idris with examples.

Type-Driven Development with Idris

Type-Driven Development with Idris
Title Type-Driven Development with Idris PDF eBook
Author Edwin Brady
Publisher Simon and Schuster
Pages 744
Release 2017-03-13
Genre Computers
ISBN 1638352240

Download Type-Driven Development with Idris Book in PDF, Epub and Kindle

Summary Type-Driven Development with Idris, written by the creator of Idris, teaches you how to improve the performance and accuracy of your programs by taking advantage of a state-of-the-art type system. This book teaches you with Idris, a language designed to support type-driven development. Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications. About the Technology Stop fighting type errors! Type-driven development is an approach to coding that embraces types as the foundation of your code - essentially as built-in documentation your compiler can use to check data relationships and other assumptions. With this approach, you can define specifications early in development and write code that's easy to maintain, test, and extend. Idris is a Haskell-like language with first-class, dependent types that's perfect for learning type-driven programming techniques you can apply in any codebase. About the Book Type-Driven Development with Idris teaches you how to improve the performance and accuracy of your code by taking advantage of a state-of-the-art type system. In this book, you'll learn type-driven development of real-world software, as well as how to handle side effects, interaction, state, and concurrency. By the end, you'll be able to develop robust and verified software in Idris and apply type-driven development methods to other languages. What's Inside Understanding dependent types Types as first-class language constructs Types as a guide to program construction Expressing relationships between data About the Reader Written for programmers with knowledge of functional programming concepts. About the Author Edwin Brady leads the design and implementation of the Idris language. Table of Contents PART 1 - INTRODUCTION Overview Getting started with IdrisPART 2 - CORE IDRIS Interactive development with types User-defined data types Interactive programs: input and output processing Programming with first-class types Interfaces: using constrained generic types Equality: expressing relationships between data Predicates: expressing assumptions and contracts in types Views: extending pattern matching PART 3 - IDRIS AND THE REAL WORLD Streams and processes: working with infinite data Writing programs with state State machines: verifying protocols in types Dependent state machines: handling feedback and errors Type-safe concurrent programming

The Little Typer

The Little Typer
Title The Little Typer PDF eBook
Author Daniel P. Friedman
Publisher MIT Press
Pages 418
Release 2018-09-18
Genre Computers
ISBN 0262536439

Download The Little Typer Book in PDF, Epub and Kindle

An introduction to dependent types, demonstrating the most beautiful aspects, one step at a time. A program's type describes its behavior. Dependent types are a first-class part of a language, and are much more powerful than other kinds of types; using just one language for types and programs allows program descriptions to be as powerful as the programs they describe. The Little Typer explains dependent types, beginning with a very small language that looks very much like Scheme and extending it to cover both programming with dependent types and using dependent types for mathematical reasoning. Readers should be familiar with the basics of a Lisp-like programming language, as presented in the first four chapters of The Little Schemer. The first five chapters of The Little Typer provide the needed tools to understand dependent types; the remaining chapters use these tools to build a bridge between mathematics and programming. Readers will learn that tools they know from programming—pairs, lists, functions, and recursion—can also capture patterns of reasoning. The Little Typer does not attempt to teach either practical programming skills or a fully rigorous approach to types. Instead, it demonstrates the most beautiful aspects as simply as possible, one step at a time.

Introduction to Dependent Types with Idris

Introduction to Dependent Types with Idris
Title Introduction to Dependent Types with Idris PDF eBook
Author Boro Sitnikovski
Publisher Apress
Pages 0
Release 2023-04-01
Genre Computers
ISBN 9781484292587

Download Introduction to Dependent Types with Idris Book in PDF, Epub and Kindle

Dependent types are a concept that allows developers to write proof-carrying code. Idris is a programming language that supports dependent types. This book will teach you the mathematical foundations of Idris as well as how to use it to write software and mathematically prove properties. The first part of the book serves as an introduction to the language's underlying theories. It starts by reviewing formal systems and mathematical logical systems as foundational building blocks, then gradually builds up to dependent types. Next, you'll learn type theory for dependent types. Following this, you'll explore the Idris programming language and conclude by exploring the depths of formal systems and type checkers by implementing them. Introduction to Dependent Types with Idris will walk you through simple examples through more advanced techniques, stepping up the difficulty as you gain more knowledge. Every chapter includes a set of exercises based on what it covered to further cement your learning. No specialized knowledge of mathematics is expected beyond the basics, so it is perfect for novices. What You Will Learn Understand Lambda calculus and dependent types Gain insight into functional programming Write mathematical proofs with Idris Who This Book Is For Programmers, mathematicians, academics, and anyone else interested learning dependent types and lambda calculus.

Certified Programming with Dependent Types

Certified Programming with Dependent Types
Title Certified Programming with Dependent Types PDF eBook
Author Adam Chlipala
Publisher MIT Press
Pages 437
Release 2013-12-06
Genre Computers
ISBN 0262317885

Download Certified Programming with Dependent Types Book in PDF, Epub and Kindle

A handbook to the Coq software for writing and checking mathematical proofs, with a practical engineering focus. The technology of mechanized program verification can play a supporting role in many kinds of research projects in computer science, and related tools for formal proof-checking are seeing increasing adoption in mathematics and engineering. This book provides an introduction to the Coq software for writing and checking mathematical proofs. It takes a practical engineering focus throughout, emphasizing techniques that will help users to build, understand, and maintain large Coq developments and minimize the cost of code change over time. Two topics, rarely discussed elsewhere, are covered in detail: effective dependently typed programming (making productive use of a feature at the heart of the Coq system) and construction of domain-specific proof tactics. Almost every subject covered is also relevant to interactive computer theorem proving in general, not just program verification, demonstrated through examples of verified programs applied in many different sorts of formalizations. The book develops a unique automated proof style and applies it throughout; even experienced Coq users may benefit from reading about basic Coq concepts from this novel perspective. The book also offers a library of tactics, or programs that find proofs, designed for use with examples in the book. Readers will acquire the necessary skills to reimplement these tactics in other settings by the end of the book. All of the code appearing in the book is freely available online.

Verified Functional Programming in Agda

Verified Functional Programming in Agda
Title Verified Functional Programming in Agda PDF eBook
Author Aaron Stump
Publisher Morgan & Claypool
Pages 328
Release 2016-02-01
Genre Computers
ISBN 1970001267

Download Verified Functional Programming in Agda Book in PDF, Epub and Kindle

Agda is an advanced programming language based on Type Theory. Agda's type system is expressive enough to support full functional verification of programs, in two styles. In external verification, we write pure functional programs and then write proofs of properties about them. The proofs are separate external artifacts, typically using structural induction. In internal verification, we specify properties of programs through rich types for the programs themselves. This often necessitates including proofs inside code, to show the type checker that the specified properties hold. The power to prove properties of programs in these two styles is a profound addition to the practice of programming, giving programmers the power to guarantee the absence of bugs, and thus improve the quality of software more than previously possible. Verified Functional Programming in Agda is the first book to provide a systematic exposition of external and internal verification in Agda, suitable for undergraduate students of Computer Science. No familiarity with functional programming or computer-checked proofs is presupposed. The book begins with an introduction to functional programming through familiar examples like booleans, natural numbers, and lists, and techniques for external verification. Internal verification is considered through the examples of vectors, binary search trees, and Braun trees. More advanced material on type-level computation, explicit reasoning about termination, and normalization by evaluation is also included. The book also includes a medium-sized case study on Huffman encoding and decoding.

Programming Language Explorations

Programming Language Explorations
Title Programming Language Explorations PDF eBook
Author Ray Toal
Publisher CRC Press
Pages 408
Release 2024-08-06
Genre Computers
ISBN 1040089356

Download Programming Language Explorations Book in PDF, Epub and Kindle

Programming Language Explorations helps its readers gain proficiency in programming language practice and theory by presenting both example-focused, chapter-length explorations of fourteen important programming languages and detailed discussions of the major concepts transcending multiple languages. A language-by-language approach is sandwiched between an introductory chapter that motivates and lays out the major concepts of the field and a final chapter that brings together all that was learned in the middle chapters into a coherent and organized view of the field. Each of the featured languages in the middle chapters is introduced with a common trio of example programs and followed by a tour of its basic language features and coverage of interesting aspects from its type system, functional forms, scoping rules, concurrency patterns, and metaprogramming facilities. These chapters are followed by a brief tour of over 40 additional languages designed to enhance the reader’s appreciation of the breadth of the programming language landscape and to motivate further study. Targeted to both professionals and advanced college undergraduates looking to expand the range of languages and programming patterns they can apply in their work and studies, the book pays attention to modern programming practices, keeps a focus on cutting-edge programming patterns, and provides many runnable examples, all of which are available in the book’s companion GitHub repository. The combination of conceptual overviews with exploratory example-focused coverage of individual programming languages provides its readers with the foundation for more effectively authoring programs, prompting AI programming assistants, and, perhaps most importantly, learning—and creating—new languages.