"Generalized Algebraic Data Structures" have become a a hot new topic. They have recently been added to the GHC compiler. They support the construction, maintenance, and propagation of semantic properties of programs using powerful old ideas about types (the Curry-Howard Isomorphism) in surprisingly easy to understand new ways. The language Omega was designed and implemented to demonstrate their utility. Here a a few talks I gave that explains how they work. Also class lectures
My existing research is mainly focused on lightweight generic programming techniques and the essence of (OO-style) design patterns. * Modular Visitor Components: A Practical Solution to the Expression Families Problem Bruno C. d. S. Oliveira ECOOP 2009. * Scala for Generic Programmers Bruno C. d. S. Oliveira, Jeremy Gibbons In Ralf Hinze, editor, Proceedings of the ACM SIGPLAN Workshop on Generic Programming (WGP'08) July 2008. * Objects to Unify Type Classes and GADTs Bruno C. d. S. Oliveira, Martin Sulzmann ICFP 2008
Constraint Functional-Logic Programming I am currently developing a Haskell library for constraint functional-logic programming. It is in an early alpha stage (does not support higher-order functions and implements no constraint solvers) but can already be used to mimic simple lazy functional-logic programs in Haskell. Monadic and Queue-Based Tree Search Insipred by Monadic Conctraint Programming by Tom Schrijvers et. al., I wrapped up some thoughts on the difference between monadic and queue-based tree search. Haskell idioms I did not understand before hacking them on my own When coding my first library for Hackage, I learned about two programming problems and their solutions in Haskell. I boiled them down to the essence and wrote two posts to share them. One on polyvariadic functions, the other on heterogeneous collections. To get an executable Haskell file simply strip off the .html suffix. Simple SAT Solver