Проблемы определений
> Функциональный стиль / императивный
стиль
Slide 5
Slide 5 text
Проблемы определений
> Функциональный стиль / императивный
стиль
> Способ проверки типов: до / во время
работы
Slide 6
Slide 6 text
Проблемы определений
> Функциональный стиль / императивный
стиль
> Способ проверки типов: до / во время
работы
> Изменяемые / неизменяемые структуры
данных
Slide 7
Slide 7 text
Проблемы определений
> Функциональный стиль / императивный
стиль
> Способ проверки типов: до / во время
работы
> Изменяемые / неизменяемые структуры
данных
> Поддержка языка
Slide 8
Slide 8 text
Проблемы определений
> Функциональный стиль / императивный
стиль
> Способ проверки типов: до / во время
работы
> Изменяемые / неизменяемые структуры
данных
> Поддержка языка
> Стиль для низкого уровня
программирования
А что у нас с типизацией?
> С попытками приведения / без
console.log(1 + 'a')
Slide 18
Slide 18 text
А что у нас с типизацией?
> С попытками приведения / без
console.log(1 + 'a')
> Проверка до выполнения / проверка
во время выполнения
Slide 19
Slide 19 text
А что у нас с типизацией?
> С попытками приведения / без
console.log(1 + 'a')
> Проверка до выполнения / проверка
во время выполнения
> Явные аннотации / скрытые типы
Slide 20
Slide 20 text
Явная типизация
позволяет нам по
одному объявлению
функции узнать о ней
все!
Callable[[List[int]], List[str]]
• Выбросит ли она исключение? Да?
Result[List[int], Exception]
23
Slide 33
Slide 33 text
Callable[[List[int]], List[str]]
• Выбросит ли она исключение? Да?
Result[List[int], Exception]
• Является ли наша функция чистой? Нет?
IO[List[int]]
23
Slide 34
Slide 34 text
Callable[[List[int]], List[str]]
• Выбросит ли она исключение? Да?
Result[List[int], Exception]
• Является ли наша функция чистой? Нет?
IO[List[int]]
• Все вместе? Конечно!
IOResult[List[int], Exception]
23
Slide 35
Slide 35 text
И более удобная
композиция
compose, pipe, flow, bind, pipeline, lift
24