Computer Science
  • Python Is Truly Dynamically Typed

    by Vanessa McHale | Computer Science

    Robert Harper points out that dynamically typed languages are a subset of statically typed languages. To wit, we could handle J values in Haskell with something like:

  • Universally Quantified Types Are Not Templates

    by Vanessa McHale | Computer Science

    Variable types (à la System F) are not templates, though one can think of them as type schemata. A template

  • Laziness, A.k.a. Computer Science

    by Vanessa McHale | Computer Science

    An established problem in functional programming is the question of evaluation order (see Hudak, §2.2). Haskell offers seq; which allows the programmer to magically introduce dependencies in evaluation order and thence subvert lazy evaluation. Sometimes this is necessary; see the foldl foldl' example.

  • Linear Types for Manipulating Expressions in the Lambda Calculus

    by Vanessa McHale | Computer Science

    If we wish to preserve global uniqueness of names during \(\beta\)-reduction, we have to \(\alpha\)-rename before each substitution. Consider:

  • Linear Effects Handling

    by Vanessa McHale | Computer Science

    Haskell puts all side effects in the IO monad, which passes around the RealWorld. This is unsatisfactory for a number of reasons, and Haskellers have spilled much ink on effects systems. As I recently noted, there are distinctions in how one handles effects at the logical level: in particular, randomness is different from array writes.