Блин, мне эти данные Юзеров понравились. Особенно почта Алберта. isaac :: User isaac = User "Isaac Newton" 372 "isaac@newton.co.uk" (fromGregorian 1683 3 1)
albert :: User albert = User "Albert Einstein" 136 "ae@mc2.org" (fromGregorian 1905 12 1) :D
Чувак там просто не вдупляет что глобально объект это просто какая-то структура данных + набор функций работающие с этой структурой поэтому LIst, Either, Maybe это иммутабельные объекты
Ну и собственно каррированная функция сложения def add(a)(b) ; val curry = add(1); curry(2) это по сути 1.add(2). Тобишь вызов у инстанса объекта Int равному 1 метода по добавления к нему 2. Просто карринованная функция тут представляет собой обект у которого одно единственное поле инт равное 1 и один единственный метод - метод добавления.