Alabhya Jindal

Progress

Mathematics

Started the HELM workbook on Basic Functions. Really nice to see how functions in mathematics and programming are the exact same thing. I liked reading about composing functions.

A page from the HELM notebook titled, Composition of functions

Functional Programming

datatype exp = Constant of int
             | Negate of exp
             | Add of exp * exp
             | Multiply of exp * exp

fun eval e =
    case e of
        Constant i => i
      | Negate e2  => ~ (eval e2)
      | Add(e1,e2) => (eval e1) + (eval e2)
      | Multiply(e1,e2) => (eval e1) * (eval e2)

val example_exp = Add (Constant 19, Negate (Constant 4))

Evaluating example_exp results in 15 as we expect.

I love how concise this is. I have done the exact thing in Ruby before. OOP requires creating a class for each data type.

Pleasantly surprised to learn that ML has records! I wrongly assumed that FP languages only have lists and tuples. I never encountered a key value data type when I tried Haskell. Not sure if it does. Most of the discussion was around lists and how amazing they are.