Scott Kilpatrick

Learn More
In previous work, we presented rules for defining overloaded functions that ensure type safety under symmetric multiple dispatch in an object-oriented language with multiple inheritance, and we showed how to check these rules without requiring the entire type hierarchy to be known, thus supporting modularity and extensibility. In this work, we extend these(More)
Module systems like that of Haskell permit only a weak form of modularity in which module implementations depend directly on other implementations and must be processed in dependency order. Module systems like that of ML, on the other hand, permit a stronger form of modularity in which explicit interfaces express assumptions about dependencies, and each(More)
Informal, quasi-empirical mathematics does not grow through a monotonous increase in the number of indubitably established theorems but through the incessant improvement of guesses by speculation and criticism, by the logic of proofs and refutations. Acknowledgments First and foremost, I'd like to thank Greg Lavender, whose early support was instrumental(More)
Acknowledgements I thank Martin Odersky for supervising my graduate studies. I thank Viktor Kuncak, Rachid Guerraoui, Amal Ahmed and Philip Wadler for agreeing to be part of my thesis jury. I met Amal at the Oregon Programming Language Summer School in 2012, and she opened my eyes to a world of proofs beyond the canon. I met Phil at POPL in Rome, where we(More)
In this paper, we describe an evolution of the Backpack mixin package system which respects the division between package manager and compiler in the Haskell ecosystem: Backpack'16. Programs written in Backpack'16 are processed in two phases: first, a mixin linking phase which computes a " wiring diagram " of components indifferent to the actual Haskell(More)
  • 1