Pure functions + Immutability Branded types Discriminated unions Type guards Optional Currying Either Optics Task & TaskEither