Да
ну типа она возвращает лист грязных функций
Функция, возвращающая IO () тоже является чистой
ага, ведь она возвращает собранное вычисление, которое рантайм в итоге вытаскивает через main и запускает
Да, и такие функции мы называем "процедуры с эффектами в IO"
можно сказать, что Int -> IO String — это функция, вычисляющая IO String, а можно сказать, что это IO-процедура, возвращающая String
Если всё считать чистым, то разделение теряет смысл. А оно полезно для ответов на некоторые вопросы. Но без конкретной задачи/вопроса определять является ли что-то чем-то бесполезно и даже вредно.
разделение имеет смысл, если всё считать чистым управлением эффектами
Обсуждают сегодня