Template Haskell — это расширение Haskell, добавляющее в язык шаблоны. Шаблоны в Haskell представляют собой что-то вроде макросов Lisp, только со строгой статической типизацией. Другими словами, TH добавляет в язык возможность метапрограммирования, то есть, написания программ, которые генерируют код программы на этапе компиляции. Давайте же попробуем разобраться, как пользоваться TH и для решения каких задач он вообще может пригодиться.

В свое время я довольно сильно увлекался всевозможной низкоуровщиной — ассемблерами (о чем как бы намекает доменное имя блога), сишечкой и так далее. Даже написал пару несложных драйверов для Windows. Но потом я открыл для себя Perl и понеслось.

Вот многие программисты считают себя умными. Читают Хабр, слушают Радио-Т, рассуждают с умным видом про шаблоны ООП или там теории категорий. И любят делать умные решения. Ведь простые решения любая обезьянка написать может, а вот сложные… Почитывая мой бложик, кто-то из вас мог ошибочно подумать, что я тоже такой весь из себя шибко умный. Знаю там Haskell, книжек много читаю. В действительности, я очень глупый. И поэтому при решении задач стараюсь использовать как можно более простые решения.

В мире Haskell есть такой хороший пакет conduit за авторством небезызвестного Michael Snoyman. Этот пакет позволяет легко и непринужденно делать множество полезных вещей с файлами, сокетами, соединениями с базами данных, всякими там TQueue или даже обычными списками. На первый взгляд пакет кажется сложным и пугающим. Но, как это часто бывает с Haskell, если не пытаться вникнуть во все наскоком, а сесть и спокойно разобраться, выясняется, что в действительности все предельно просто.

Мини заметок не было целых два месяца. Я знаю, вы по ним соскучились! В этом выпуске: настраиваем VNC в Ubuntu, конвертируем онлайн-книги в PDF, изучаем консольные сниферы, клонируем схемы в PostgreSQL и не только. Предыдущие выпуски: тринадцатый, двенадцатый, одиннадцатый, десятый.

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

Все еще пребываю под впечатлением от возможности использовать OpenGL в Haskell. Поэтому в данном выпуске вас ждет много ссылок на редакторы карт и моделей, кроссплатформенные игры, а также игровые движки с открытым исходным кодом. Но, разумеется, не только они. Предыдущие выпуски: июль 2013, июнь 2013, май 2013, апрель 2013.

На днях я разгребал свой список статей для отложенного прочтения. Помимо прочего, в нем был найден хабрапост Графика через OpenGL на Haskell, который пробудил во мне былой интерес к работе с трехмерной графикой на правильном языке. А что может остановить программиста, которому что-то дико интересно и хочется в этом разобраться?

Возможность Erlang'а производить прозрачный обмен сообщениями между процессами, работающими на разных физических машинах, бесспорно, является интересной и порой весьма практичной. Но не факт, что эту возможность следует использовать именно в вашем проекте. Хотя далее по тексту речь будет идти об Erlang, многое из написанного также относится и к распределенным акторам в Akka или Cloud Haskell.

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