Как стать автором
Обновить
117
0
Александр Здрогов @Tazman

Математик-Программист

Отправить сообщение

Haskell. Задача о мудрецах и колпаках

Время на прочтение8 мин
Количество просмотров30K
Три мудреца поспорили, кто из них самый мудрый. Чтобы выяснить правду, каждый надел на голову колпак случайного цвета. Каждый мудрец видит цвета колпаков своих оппонентов, но не видит свой собственный. Побеждает тот, кто сможет определить цвет своего колпака.

Так получилось, что все трое вытянули колпаки белого цвета. Мимо проходящий прохожий сообщает им: «на одном из вас надет белый колпак». Через некоторое время самый умный из мудрецов воскликнул: «на мне белый колпак!!!».

Как он об этом догадался?
Существует определенная последовательность рассуждений, которая привела нашего мудреца к верному ответу. Мы попытаемся смоделировать эти рассуждения.
Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии38

Haskell. Монады. Монадные трансформеры. Игра в типы

Время на прочтение4 мин
Количество просмотров26K
Еще одно введение в монады для совсем совсем начинающих.

Лучший способ понять монады — это начать их использовать. Нужно забить на монадические законы, теорию категорий, и просто начать писать код.

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

С обычными функциями все понятно. Если имеется функция типа «a->b», то подставив в неё аргумент типа «a», вы получите результат типа «b».

С монадами все не так очевидно. Под катом подробно расписано, как работать с do-конструкцией, как последовательно преобразуются типы, и зачем нужны монадные трансформеры.
Читать дальше →
Всего голосов 32: ↑29 и ↓3+26
Комментарии51

Реализация мультиплеера в игре. Сравнение возможностей Game Center, Steamworks и GameSparks

Время на прочтение8 мин
Количество просмотров16K
Игры с многопользовательским режимом значительно интересней аналогичных игр без него. Но реализация мультиплеера подразумевает под собой наличие своего сервера, кода, реализующего сетевое взаимодействие, матчмекинг и многое другое.

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

  1. Game Center (игры под iOS)
  2. Steamworks (игры для Steam)
  3. GameSparks (кроссплатформенное решение)

Под катом я расскажу про каждый из этих вариантов, основные возможности, возникшие трудности, плюсы и минусы. От кусков кода я воздержусь. Все есть в документации.
Всего голосов 12: ↑12 и ↓0+12
Комментарии7

Теория относительности в картинках

Время на прочтение6 мин
Количество просмотров366K
В своей статье я хотел бы рассказать о теории относительности. Эта теория не требуется в представлении. С самого своего создания она была окутана ореолом тайны, поскольку полностью подрывает наши привычные представления о пространстве и времени. Все мы в школе учили формулы теории относительности, но мало кто действительно понимал их. И это не удивительно, ведь человеку, чтобы по-настоящему понять какую-то теорию во всей её красоте, полноте и непротиворечивости, не достаточно знать формулы. Нужно иметь какой-то визуальный ориентир, нужна динамика, чтобы было что-то, что можно повертеть в руках. Я решил восполнить этот пробел и написал небольшую программку, в которой можно «повертеть в руках» пространство-время. Мы, как настоящие исследователи, с помощью небольших экспериментов попытаемся выяснить основные свойства этой загадочной материи.
Под катом много картинок (и ни одной формулы).
Читать дальше →
Всего голосов 272: ↑266 и ↓6+260
Комментарии345

Ленивый hGetContents. Баг или фича? (Haskell)

Время на прочтение4 мин
Количество просмотров3.3K
Меня давно беспокоит одна тема. Вот решил высказаться и услышать, что думают люди по этому поводу. Речь пойдет о функции hGetContents. Если вы когда-нибудь работали с файлами, то вы знаете, что эта функция возвращает содержимое файла (потока). Вот типичный пример использования этой функции.
import System.IO

main = do 
	file <- openFile "1.txt" ReadMode
	content <- hGetContents file
	print content
	hClose file
-- результат: выводит содержимое файла на экран

Читать дальше →
Всего голосов 10: ↑7 и ↓3+4
Комментарии20

Монада ContT в картинках (Haskell)

Время на прочтение5 мин
Количество просмотров4.5K
На хабре уже были статьи про продолжения и монаду ContT. Я решил поделиться своим пониманием этого вопроса и снабдить его соответствующими иллюстрациями. В отличие от приведенной выше статьи, мне бы хотелось больше внимания уделить внутреннему устройству монады ContT и разобраться, как же она работает.
Читать дальше →
Всего голосов 31: ↑28 и ↓3+25
Комментарии10

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность