Ответы пользователя по тегу Функциональное программирование
  • Как должна выглядеть UML диаграмма компонентов для функционального подхода?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Во первых. Функциональное программирование не запрещает дата-объекты. Вот к примеру если у вас есть таблица Employee из стандартного учебного набора Oracle то она может быть отражена таким образом в Haskell:

    data Employee = Employee {
     empno :: Integer,
     ename :: [Char],
     job :: [Char],
     mgr :: Maybe[Integer],
     hiredate :: Day,
     sal :: Integer,
     comm :: Maybe[Integer],
     deptno :: Integer
    }


    В том что Haskell это достаточно строгий язык который лежит в категории ФП я надеюсь никто не сомневается.

    А в мультипарадигменных языках типа Scala с объектами
    вообще нет проблем. Берите - делайте объекты сколько надо.

    Во вторых, UML проектирование - это такой-себе уровень абстракций, который удобно
    обсуждать с бизнесом и показывать на слайдах. Но он вовсе не обязан следовать буква-в-букву коду.
    Архитектура - это вообще не про код. Это про намерения, про взаимодействие, про стандарты и смыслы.

    Методы UML объектов вы можете сделать функциями. Я не вижу в этом чего-то нерешаемого.
    Рассматривайте метод как функцию где первый аргумент - это сам объект. Это такой легкий
    троллинг ООП. Типа ООП - это функции где первый аргумент == this.
    Ответ написан
    Комментировать
  • В чём смысл такого вывода Char'ов?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Список символов - это строка в Haskell.

    Просто так договорились. Это как договорились в С++ что строка ASCIZ это вектор символов который всегда завершается нулевы байтом. Этот факт никого не смущает? Все нормально сглотнули и пошли кодить. Верно?

    А по поводу прочих синтаксических конфет - все в правовом поле. Все логично. Haskell - вообще один из самых строгих и логичных языков. В нем даже change-requests происходят не просто как в других языках. Не просто хотелки. Там - любое изменение - это через paper. Через какой-то документ имеющий научный смысл.
    Ответ написан
    Комментировать
  • Как понять каррирование в Haskell?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Лямбда применяется к массиву типа A и возвращает массив типа B.

    Вот и все.
    Ответ написан
  • Что такое монадическая обработка ошибок?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Интересно обратываются ошибки I/O в Rust. Там такой синтаксис что ты не можешь получить результат не обработав ошибку. Является ли это монадической схемой? ХЗ.
    use std::fs;
    
    fn main() {
        let data = fs::read_to_string("/etc/hosts").expect("Unable to read file");
        println!("{}", data);
    }

    В других языках можно как-то проскочить между капелек дождя. Просто не делать секцию catch(exception) а здесь компиллятор просто не соберет код без except().

    Есть еще другой более красивый кейс с Rust но я его не найду никак.
    Ответ написан
    1 комментарий