Ideas
This is a collection of thoughts, ideas, and research I'm involved in. Most of the links are currently broken, and I'll try to fix them in due time.
Articles and Essays
- What To Know Before Debating Type Systems: This is an essay I wrote about the static/dynamic (et cetera) typed languages debates around on the Internet. It is a review of the important issues in applied type systems, and an attempt to frame type system debates in a more interesting way.
Current Research
- Classification of Leavitt Path Algebras: This is a research topic I'm currently working on in algebra. The general idea is to start from directed graphs, and use them to build algebras who terms are the scalar multiples of paths in the graph. We are trying to classify the purely infinite simple algebras that are formed in this way.
- Automated Composition of Music: On a lighter note, I'm also working on writing software to compose music. This is a semester project for an AI course I'm taking, so it's not real research, but it is a lot of fun.
Other Ideas
Here are some other ideas that I've spent some time thinking about, but that I'm not actively working on right now.
-
Monadic Subexpressions in Haskell: Effectful code can be quite painful to
write in Haskell. Monadic subexpressions are a proposal to try to ease that pain
by being a little less explicit about the order of effects. This is not without
its controversy, unfortunately. The idea is to allow statements of the form:
process (<- readFile "myFile.txt"), which would become equivalent tos <- readFile "myFile.txt" ; process s. The effectful computation is still explicit, but the code is a little less sequential. This is very helpful when one is writing a lot ofreadTVarstatements in anSTMcontext, where the order of operations is actually guaranteed not to matter anyway. -
Running Untrusted Code in Haskell: This proposal would
be to modify the behavior of GHC so that one would safely compile and run code without
trusting the source. Haskell is most of the way there already, since effects are explicit.
However, there are some (intentional) holes involving TH, the FFI, or calls to
unsafePerformIOand friends. The goal, then, is to figure out how to close those holes to untrusted code, while still allowing them in trusted code.