Type inference with polymorphic recursion
ACM Transactions on Programming Languages and Systems (TOPLAS)
Science of Computer Programming - Special issue on mathematics of program construction
Purely functional data structures
Purely functional data structures
The Quadtree and Related Hierarchical Data Structures
ACM Computing Surveys (CSUR)
Functional Programming with Quadtrees
IEEE Software
MPC '98 Proceedings of the Mathematics of Program Construction
de Bruijn notation as a nested datatype
Journal of Functional Programming
A new approach to generic functional programming
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Monotone Inductive and Coinductive Constructors of Rank 2
CSL '01 Proceedings of the 15th International Workshop on Computer Science Logic
Simulating quantified class constraints
Haskell '03 Proceedings of the 2003 ACM SIGPLAN workshop on Haskell
Faking it Simulating dependent types in Haskell
Journal of Functional Programming
Journal of Functional Programming
ACM SIGPLAN Notices
Functional pearl: implicit configurations--or, type classes reflect the values of types
Haskell '04 Proceedings of the 2004 ACM SIGPLAN workshop on Haskell
Strongly typed heterogeneous collections
Haskell '04 Proceedings of the 2004 ACM SIGPLAN workshop on Haskell
Types for describing coordinated data structures
TLDI '05 Proceedings of the 2005 ACM SIGPLAN international workshop on Types in languages design and implementation
Substitution in non-wellfounded syntax with variable binding
Theoretical Computer Science - Selected papers of CMCS'03
Proceedings of the 2006 ACM SIGPLAN workshop on Generic programming
Practical type inference for arbitrary-rank types
Journal of Functional Programming
Iteration and coiteration schemes for higher-order and nested datatypes
Theoretical Computer Science - Foundations of software science and computation structures
A history of Haskell: being lazy with class
Proceedings of the third ACM SIGPLAN conference on History of programming languages
Type-based termination of generic programs
Science of Computer Programming
(Co-) iteration for higher-order nested datatypes
TYPES'02 Proceedings of the 2002 international conference on Types for proofs and programs
Polarized subtyping for sized types
CSR'06 Proceedings of the First international computer science conference on Theory and Applications
Epigram: practical programming with dependent types
AFP'04 Proceedings of the 5th international conference on Advanced Functional Programming
Towards generic programming with sized types
MPC'06 Proceedings of the 8th international conference on Mathematics of Program Construction
A datastructure for iterated powers
MPC'06 Proceedings of the 8th international conference on Mathematics of Program Construction
Dependently typed programming with singletons
Proceedings of the 2012 Haskell Symposium
Hi-index | 0.00 |
Square matrices serve as an interesting case study in functional programming. Common representations, such as lists of lists, are both inefficient---at least for access to individual elements---and error-prone, because the compiler cannot enforce "squareness". Switching to a typical balanced-tree representation solves the first problem, but not the second. We develop a representation that solves both problems: it offers logarithmic access to each individual element and it captures the shape invariants in the type, where they can be checked by the compiler. One interesting feature of our solution is that it translates the well-known fast exponentiation algorithm to the level of types. Our implementation also provides a stress test for today's advanced type systems---it uses nested types, polymorphic recursion, higher-order kinds, and rank-2 polymorphism.