No more new materials on the course this week, we’ve been off on an Easter break, so a nice slowdown from before. I’ve been wrestling with type inference and my literature review. My practice for the lit review has been very relaxed, I’m just aiming to hit a word count of 200 words a day, and provided I do that every day there should be no issue with meeting the deadline. I think I’m going to use the same workflow for the other essays I have due at the end of the month. It’s a nice target to meet, not too much but enough to get down a full thought. I had some great feedback from the initial draft of my project plan, which was a nice confidence boost. I need to carry that through now and detail the background of the ideas I introduced

The type inference over the past week has been more difficult. In the $\lambda$-calculus and programming in general, types help us constrain what programs can do, preventing bad or unexpected behaviour. Specifically with $\lambda$-terms, every term is itself a function, even representations of data like numbers. The type of a function will tell us what kind of input it expects, and what kind of output it returns. Type inference works by applying a series of typing rules to the three variations of terms in the $\lambda$- calculus, variables, abstractions, and applications.

Because we’re programming this in Haskell, the computation for this is all recursive and based on pattern matching. It’s very powerful and makes sense in a lot of ways, but passing around variables that accumulate and lists that split is an absolute pain. Slowly figuring it all out there.

Reading List