Proc. of a conference on Functional programming languages and computer architecture
Views: a way for pattern matching to cohabit with data abstraction
POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Programming in Martin-Lo¨f's type theory: an introduction
Programming in Martin-Lo¨f's type theory: an introduction
Computation and reasoning: a type theory for computer science
Computation and reasoning: a type theory for computer science
The ALF proof editor and its proof engine
TYPES '93 Proceedings of the international workshop on Types for proofs and programs
Substitution: a formal methods case study using monads and transformations
TAPSOFT '93 Selected papers of the colloquium on Formal approaches of software engineering
Algebra of programming
Eliminating array bound checking through dependent types
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Purely functional data structures
Purely functional data structures
Cayenne—a language with dependent types
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
From fast exponentiation to square matrices: an adventure in types
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
A Machine-Oriented Logic Based on the Resolution Principle
Journal of the ACM (JACM)
The Definition of Standard ML
Scrap your boilerplate: a practical design pattern for generic programming
Proceedings of the 2003 ACM SIGPLAN international workshop on Types in languages design and implementation
Elementary Strong Functional Programming
FPLE '95 Proceedings of the First International Symposium on Functional Programming Languages in Education
Codifying Guarded Definitions with Recursive Schemes
TYPES '94 Selected papers from the International Workshop on Types for Proofs and Programs
Monadic Presentations of Lambda Terms Using Generalized Inductive Types
CSL '99 Proceedings of the 13th International Workshop and 8th Annual Conference of the EACSL on Computer Science Logic
Dependent types in practical programming
Dependent types in practical programming
Journal of Functional Programming
Journal of Functional Programming
First-order unification by structural recursion
Journal of Functional Programming
Faking it Simulating dependent types in Haskell
Journal of Functional Programming
A predicative analysis of structural recursion
Journal of Functional Programming
de Bruijn notation as a nested datatype
Journal of Functional Programming
Interactive Theorem Proving and Program Development
Interactive Theorem Proving and Program Development
Proceedings of the 2005 ACM SIGPLAN workshop on Haskell
Recursive coalgebras from comonads
Information and Computation - Special issue: Seventh workshop on coalgebraic methods in computer science 2004
∂ for Data: Differentiating Data Structures
Fundamenta Informaticae - Typed Lambda Calculi and Applications 2003, Selected Papers
Web Interfaces for Proof Assistants
Electronic Notes in Theoretical Computer Science (ENTCS)
Foundations for structured programming with GADTs
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Journal of Functional Programming
A New Elimination Rule for the Calculus of Inductive Constructions
Types for Proofs and Programs
A Modular Type-Checking Algorithm for Type Theory with Singleton Types and Proof Irrelevance
TLCA '09 Proceedings of the 9th International Conference on Typed Lambda Calculi and Applications
Recursive coalgebras from comonads
Information and Computation - Special issue: Seventh workshop on coalgebraic methods in computer science 2004
Proving program properties specified with subtype marks
IFL'06 Proceedings of the 18th international conference on Implementation and application of functional languages
Comparing approaches to generic programming in Haskell
SSDGP'06 Proceedings of the 2006 international conference on Datatype-generic programming
Generic programming with dependent types
SSDGP'06 Proceedings of the 2006 international conference on Datatype-generic programming
SSDGP'06 Proceedings of the 2006 international conference on Datatype-generic programming
Language-based verification will change the world
Proceedings of the FSE/SDP workshop on Future of software engineering research
Fundamenta Informaticae - Dependently Typed Programming
A Tutorial Implementation of a Dependently Typed Lambda Calculus
Fundamenta Informaticae - Dependently Typed Programming
Embedding a proof system in haskell
CEFP'09 Proceedings of the Third summer school conference on Central European functional programming school
AMAST'10 Proceedings of the 13th international conference on Algebraic methodology and software technology
A foundation for GADTs and inductive families: dependent polynomial functor approach
Proceedings of the seventh ACM SIGPLAN workshop on Generic programming
Descriptor-free representation of arrays with dependent types
IFL'08 Proceedings of the 20th international conference on Implementation and application of functional languages
Self-certification: bootstrapping certified typecheckers in F* with Coq
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Sorted: Verifying the problem of the dutch national flag in agda
Journal of Functional Programming
A few constructions on constructors
TYPES'04 Proceedings of the 2004 international conference on Types for Proofs and Programs
Exploring the regular tree types
TYPES'04 Proceedings of the 2004 international conference on Types for Proofs and Programs
A dependently typed framework for static analysis of program execution costs
IFL'05 Proceedings of the 17th international conference on Implementation and Application of Functional Languages
MSFP'06 Proceedings of the 2006 international conference on Mathematically Structured Functional Programming
Dependently typed programming based on automated theorem proving
MPC'12 Proceedings of the 11th international conference on Mathematics of Program Construction
∂ for Data: Differentiating Data Structures
Fundamenta Informaticae - Typed Lambda Calculi and Applications 2003, Selected Papers
Electronic Notes in Theoretical Computer Science (ENTCS)
Relational algebraic ornaments
Proceedings of the 2013 ACM SIGPLAN workshop on Dependently-typed programming
Leveling up dependent types: generic programming over a predicative hierarchy of universes
Proceedings of the 2013 ACM SIGPLAN workshop on Dependently-typed programming
Programming errors in traversal programs over structured data
Science of Computer Programming
Hi-index | 0.00 |
Find the type error in the following Haskell expression: if null xs then tail xs else xs You can’t, of course: this program is obviously nonsense unless you’re a typechecker. The trouble is that only certain computations make sense if the null xs test is True, whilst others make sense if it is False. However, as far as the type system is concerned, the type of the then branch is the type of the else branch is the type of the entire conditional. Statically, the test is irrelevant. Which is odd, because if the test really were irrelevant, we wouldn’t do it. Of course, tail [] doesn’t go wrong—well-typed programs don’t go wrong—so we’d better pick a different word for the way they do go. Abstraction and application, tupling and projection: these provide the ‘software engineering’ superstructure for programs, and our familiar type systems ensure that these operations are used compatibly. However, sooner or later, most programs inspect data and make a choice—at that point our familiar type systems fall silent. They simply can’t talk about specific data. All this time, we thought our programming was strongly typed, when it was just our software engineering. In order to do better, we need a static language capable of expressing the significance of particular values in legitimizing some computations rather than others. We should not give up on programming.