Публикации по теме 'haskell'


Работа с монадами
У меня был большой камень преткновения в изучении монад. Возможно, неудивительно, что это произошло потому, что я пытался зайти с определенной монадической аналогией слишком далеко в классе колледжа, где я впервые узнал о них. У меня в голове возникла идея, что «монады подобны сундуку с сокровищами», и моя мысленная модель выглядела примерно так: Монады подобны сундуку с сокровищами. Вы не можете напрямую получить доступ к тому, что внутри ( a в IO a ). То есть, если вы уже не..

Haskell I: история, использование и настройка
Как и почему существует Haskell? Узнайте, как настроить VS Code для большего удобства! Недавно слушал подкаст Алгоритмы + Структуры данных = Программы , и в одном из выпусков, не помню в каком, много говорилось об улучшении кода. И Конор Хекстра (думаю, это мог быть и Брайс Адельштейн ) говорил о том, как изучение Haskell улучшило его мышление и способ написания кода, поэтому я решил изучать язык как улучшение моего кода . решение в этом году. Большую часть времени я..

Использование Nix для получения библиотек C!
В последние пару недель мы начали знакомиться с менеджером пакетов Nix . В прошлый раз мы использовали cabal2nix , чтобы преобразовать чисто проект Кабала в проект Nix. Это продемонстрировало, как мы могли бы получить наши зависимости Haskell из хранилища Nix, если бы захотели. Но одно из достоинств Nix в том, что он имеет гораздо больше возможностей, чем пакеты Haskell! Иногда мы можем использовать пакет с более сложной зависимостью, например библиотеку C. Мы не можем так..

Отлов перед производством: операторы Assert в Haskell
В этом месяце мы потратили много времени на изучение исключений, которые являются способами сигнализировать в нашей программе о том, что произошло что-то неожиданное. Это часто приводит к досрочному завершению нашей программы, даже если мы их поймаем. Но, перехватив их, мы обычно можем предоставить более полезные сообщения об ошибках и журналы. Исключения предназначены для использования в производственном коде. Вы не хотите, хотите , чтобы они когда-нибудь сработали, но они есть ...

guessing_game: продолжение
Я получил несколько комментариев к моим предыдущим сообщениям о Rust (на Medium и в моем русскоязычном ЖЖ). Я ценю ответы, они кое-что прояснили для меня в Rust. Нет классов Все связанные функции не принадлежат ни к какому классу. На самом деле в Rust нет классов. Связанные функции могут возвращать объекты (переменные) заданного типа, но они не являются экземплярами какого-либо класса, они просто имеют типы. Это небольшая проблема, которую нужно понять, поскольку я привык к идее..

Использование Либо как монады
Теперь, когда февраль закончился и наступил март, пришло время «Месяца монад»! В течение следующего месяца я буду давать несколько полезных советов о различных способах использования монад. Сегодня я начну с простого наблюдения: тип Either — это монада! Долгое время я использовал Either как обычный тип без особых правил. Но его монадическое поведение позволяет с легкостью связать с ним несколько вычислений! Начнем с самого начала. Как выглядит Either ? Ну, это очень простой тип,..

Что нового в кросс-компиляции Haskell
Октябрьское издание После объявления и выпуска экспериментальных превью кросс-компилятора в виде бинарных дистрибутивов в прошлом месяце оказалось, что бинарные дистрибутивы, созданные системой сборки make base, не то, на что я надеялся. GHC 8.4.1 не за горами (выпуск в феврале 2018 г., ветка выпуска в ноябре 2017 г.) и будет поставляться с новой системой сборки, основанной на встряхивании , под названием адриан , которая находится в разработке уже довольно долгое время. . План -..