Ответы пользователя по тегу Haskell
  • Что за тип Unit в Haskel Rust Kotlin? Чем отличается от Void?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я не понимаю зачем ты поставил такое число тегов? Мы что здесь 4 разных языка обсуждать будем?
    У них у всех разные механизмы работы с типами.

    Что за тип Unit в Haskel Rust Kotlin? Чем отличается от Void?
    Раз 500 прочел, не понял ни разу.

    Программирование - это практическая наука. Это не философия и не политология.
    Тебе не надо 500 раз читать. Читай 1 раз и пиши программу. И смотри как она себя ведет.
    void - это просто заглушка. Синтаксически полезна в операциях с указателями чтобы
    указывать что тип ссылки - неизвестен. Unit в некоторых языках (Scala) это тип-значение
    и его можно возвращать. В Хаскеле чтобы вернуть "ничто" - используется монада Maybe.

    int a=(int)(object)1;
    Что довольно дорого и долго. С выделением памяти в куче.

    Не понимаю что здесь дорого и долго? Или это пример неудачный. Хороший компиллятор
    сворачивает боксированные типы и сводит их к примитивам. Боксы также в runtime
    инициализируются через Flyweight чтоб иметь ровно 1 экземпляр на примитив.

    Ведь это прекрасно покроет все простые структурные типы, int char double.,

    Какие структурные типы? Откуда ты берешь терминилогию. Я тебя очень прошу в данном
    форуме - не придумывай новое применение устоявшимся терминам!

    То что ты хочешь (передача 8 байт) хорошо реализуется в Си и Ассемблере. Если тебе нужен именно такой
    уроверь абстракции - то тебе прямая дорога туда. Я напомню тебе также что типы в ЯВУ создавались
    долгие десятилетия. Они создавались с целью помочь программисту не делать ошибок и проводить
    формальное доказательство правоты программы. Программа с типами - имеет шанс быть правильной.
    Программа лишенная мехнизмов проверки типов - будет кишмя кишеть ошибками рантайма. И даже
    тестирование не будет доказывать их отсутствие в будущем.
    Ответ написан
    1 комментарий
  • В чём смысл такого вывода Char'ов?

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

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

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

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

    Вот и все.
    Ответ написан
  • Как решить задачу о быках, коровах и телятах на Haskell?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Эта задача похожа на поиск в глубину DFS и на задачу об укладке рюказака.

    Как решить ее на Хаскеле - я пока не знаю. Надо думать. Особенно в части поиска
    оптимальности и вообще доказательства того что решение существует.

    Доказательство - важно если вы представите что цены на коров - иррациональные числа на пример.
    Ответ написан
    Комментировать