ЭТО БЛОГ НБРК

ДБРО ПОЖА В МОЙ БЛОГ . ТУТ Я ПУБЛ ВСЯК РАЗН ЗПСИ И ЗМТК О ПРОГ , ЯЗКЕ ИЛИ ДАЖЕ О ЖИЗН . В ОСНО ДЛЯ СЕБЯ , ЧТОБ ПТОМ СМТР ИЗ БУДЩ .

НЕКТ МОИ ТЕХН ПРОЭ ЕСТЬ НА ГТХБ , И ТУТ Я ИНГД ПУБЛ ПРОЧ ИДЕИ ИЛИ ДОП ТЕОР ДОКИ ПО НИМ . В НАСТ МОМТ Я ИССЛ ВОЕН ИГРЫ И КОМП СИМУ .

КСТА , ОЧЕН МНОГ ХОРШ СЛОВ УМЕЩ ВСГО В ЧТРЕ СИМВ , НАПР UNIX, СИ++ ИЛИ НБРК .

Почему конструкция if-then-else малополезна в языках программирования

Введение: if-then-else В большинстве языков программирования имеется условная конструкция IF ... THEN ... ELSE .... Она знакома любому школьнику и представляет собой развилку на пути из некоторого абстрактного типа a в тип b. Решение о том, взять первый путь или второй, принимается с помощью предиката, то есть путя из a в булев тип (истина/ложь). Вместе с обоими вариантами b (т.н. ветками условия), предикат также идёт параметром к конструкции IF ... THEN .
ЧТАТ ПОЛН →

Генерация MathJax в Hakyll: написание математических формул в markdown

Введение Hakyll - отличная система генерации статичных вэб-сайтов (блогов, персональных страничек, …), написанная на языке Haskell. Фактически же, hakyll - это всего-навсего набор библиотек для сборки пользователем собственной Haskell-программы, которая и используется в дальнейшем для создания (генерации, обновления) статичных (HTML) вэб-страничек с использованием шаблонов. На вход программе-генератору обычно поступают обыкновенные текстовые файлы в синтаксисе Markdown, в которых и содержится наполнение страниц сайта. Hakyll использует мощнейшую Haskell-библиотеку pandoc для преобразования информации из Markdown в HTML и многие другие форматы.
ЧТАТ ПОЛН →

Простая интуиция линз, призм, изоморфизмов (lens)

Введение В данной заметке я вкратце и упрощённо поделюсь своим пониманием общей картины (“Big Picture”) библиотеки lens и вытекающей из него интуиции о линзах. Интуиция основных операций с линзовыми объектами Итак, имея линзовый объект (о них - позже), мы можем осуществлять с его помощью четыре фундаментальных действия: Смотреть на фокус линзы, то есть фокусироваться внутрь структуры данных: view Модифицировать данные в фокусе линзы, оставляя остальную структуру без изменений: over Полностью замещать данные в фокусе линзы (может быть, на другой тип), оставляя остальную структуру без изменений: set Комбинировать линзовые объекты друг с другом, производя новый линзовый объект: (.
ЧТАТ ПОЛН →

Траверсабельные и битраверсабельные структуры: Data.Traversable

Интуиция тайпкласса Traversable Тайпкласс Data.Traversable базируется на функториальных, фолдабельных абстракциях и представляет собой такие (часто контейнерные) структуры данных, которые можно последовательно погрузить в некоторый аппликативный контекст с сохранением формы структуры. Проще говоря, траверсабельные контейнеры позволяют замапить все элементы структуры в вычислительный контекст, произвести эти вычисления слева-направо и собрать результат в контексте внутри точно такого-же контейнера. Если Data.Foldable подразумевает полное разрушение формы контейнера в процессе последовательной свёртки, т. е. создания дайджеста, то Data.
ЧТАТ ПОЛН →

Два пути к Data.Foldable: структуры, допускающие свёртку

Интуиция Класс Data.Foldable представляет собой абстракцию над такими (часто контейнерными) типами данных, которые допускают свёртку (fold). Для этих типов осмыслена и определена операция коллапса, то есть разрушения и схлопывания всей структуры в одно единственное итоговое значение (дайджест, резюме). > foldr (+) 100 $ Node 2 [Node 1 [], Node 3 []] 106 > let f = foldr (.) id [(+1), (*2), (+10)] > :t f f :: Num b => b -> b > f 1 23 Если некоторый тип t реализует интерфейс тайпкласса Data.
ЧТАТ ПОЛН →