Home

Ангэ · Эсэф

Свежие записи · Архив · Друзья · Личная информация

* * *
happy birthday!
Сегодня у [info]martreya День Рожденья! Ура, ура, ура! :)
* * *

Реклама

* * *
xmonad
Роман Чепляка выложил в HTML нашу статью о xmonad, весьма хорошем оконном менеджере, написанном на haskell.
Ранее она публиковалась в журнале Open Source, выпуски 27, 28, 29.
Можно смело сказать, что статья является самой подробной из всего написанного про xmonad на русском :)
* * *
On CS articles
Хотите написать умную статью, но не знаете о чём?

Вам поможет это! О правильном использовании написано в разделе Examples :)

P.S. Спасибо за наводку замечательному блогу http://www.defmacro.org, не перестаю получать удовольствие от тонкого юмора в статьях автора :)

P.P.S. А в материалах конференции WMSCI 2005 такие статьи даже печатают! Подробнее обо всей этой истории здесь.

* * *
Турция
Примерно неделю назад мы с Мариной ([info]martreya) вернулись из двухнедельного автостопа по Турции. Поездка получилось отличной, полной ярких впечатлений и интересной. Турки - замечательные люди, спокойные, улыбчивые и дружелюбные. История страны невообразимо насыщена, кого здесь только не было: и хетты, и греки, и римляне, и турки-сельджуки, и турки-османы! Стамбул (Константинополь) - бывшая столица трёх империй: Восточно-Римской, Византийской и Османской. В общем, предварительно начитавшись статей и путеводителей мы двинулись в путь :)

Маршрут был такой:

Киев - Одесса - (1.5 дня на теплоходе) - Стамбул - Изник - Ассос - Эгейское море - Измир - Гюмюльдюр - Сельчук - Эфес - Конья - Гёреме (Каппадокия) - Невшехир - Стамбул - (1.5 дня на теплоходе) - Севастополь - Киев.

Карта:

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

Несмотря на то, что во время путешествия я записывал некоторые впечатления в блокнот, я всё никак не соберусь упорядочить их и привести в какой-то художественный вид. В отличие от меня, Марина - молодец, выкладывает фотографии и пишет отличные отчёты, ссылки на которые я сейчас и приведу.

Вступление
Одесса
Стамбул (часть первая)
Изник
Ассос(Бехрамкале)
Гюмюлдюр
Эфес
Сельчук

UPD:
Конья
Гёреме, Каппадокия
Каппадокия (часть вторая)
Гёреме, музей
Стамбул (часть вторая)
Море

Метки:

* * *
О букве Ё
В последнее время я начал проверять орфографию с помощью программы aspell и обнаружил, что в виндовой её поставке нет русского словаря с буквой "ё". Соответственно, при проверке aspell ругается на слова типа "поёт", "смеётся" и т.д., что мне совершенно не нравится.

Оказалось, что такая проблема со словарями есть далеко не только у aspell-а, и довольно часто отдельно выпускаются словари с буквой "ё" и без неё. Более того, опросив пару человек в аське, я удивился тому, что многие из них не употребляют в наборе букву "ё", так как "она неудобно расположена на клавиатуре", "и так понятно где она, а где е" и т.д.

Немного поисследововав этот вопрос, можно узнать следующие факты:


  • Ё была предложена в 1783, впервые использована в печати в 1795, однако формально вошла в алфавит только в советские годы

  • относительно названия надстрочного элемента (вот тех двух точек) нет единого мнения. Употребление слов "умляут", "трема" считается некорректным, поскольку относится к диакритике символа, а диакритика связана с произношением звука (и т.к. ё фонетически не связана с е (ё=йо, е=йэ), то две точки сверху - не диакритический символ)

  • медленное введение в обиход и распространение буквы ё объясняется её неудобной для быстрого письма формой и техническим несовершенством печатных средств докомпьютерной эпохи. Заметьте, обе эти причины отсутствуют в компьютерном наборе. Хотя, конечно, им на смену может прийти несколько необычное расположение этой буквы на клавиатуре

  • в результате необязательности употребления буквы "ё", сейчас мы можем наблюдать множество исковерканных личных имён (Ришелье, Монтескье, Рентген, Рерих и т.д. - все они были с буквой Ё ;))


И что мне кажется более важным: появляются разногласия при написании слов типа "маневр", "желчь", "блеклый", "издевка" и т.д. Таким образом, когда мы видим букву "е" - мы должны задумываться о том как правильно прочесть это слово: с "е" или с "ё". Если бы "ё" было обязательным в этих случаях, разногласий бы не возникло.

Действующие правила орфографии не требуют написания буквы "ё", однако рекомендуют её написание в неоднозначных словах. Однако, задумываетесь ли вы например при написании очередного поста в ЖЖ, что слово "все" может быть прочитано как "всё"? Уверен, что нет. Увидев такое слово в неоднозначном предложении, приходится возвращаться к нему и переосмысливать прочитанное, что не менее важно, чем то, что взгляд "спотыкается о букву Ё", что например является одним из главных аргументов "против" в статье Лебедева про Ё из его книги "Ководство".

Для того, чтобы исследовать какой процент фрэндов моего ЖЖ использует букву "ё" в своих постах, я написал небольшой скрипт - ёметер :) Он извлекает список друзей, затем последние 25 постов каждого пользователя и проводит простой анализ. Для каждого пользователя затем выдаётся "yo-ratio" (отношение постов с "ё" ко всем постам), так же отношение фрэндов хотя бы раз употребивших "ё" ко всем фрэндам. У меня этот результат таков:

 total users = 106, significant users = 100,
 yo users = 64, ratio = 0.64
 
Таким образом 36 процентов моих фрэндов ни разу не употребило "ё" за последние 25 постов! К вам, собственно, и обращён этот мой пост :)

Ссылки:

- исходный код yometer.py (для использования необходим python и доступ в интернет)
- статья про Ё в русской википедии
- много ссылок в конце этой статьи
- параграф из книги "Ководство" А. Лебедева

UPD: Для поднятия насущности вопроса публикую под катом список фрэндов, не употребляющих "ё" :) (отредактирован после работы скрипта - вычеркнуты англоязычные и украиноязычные юзеры)
список )

Метки: , ,

* * *
Вторая встреча SpbHUG
Сегодняшняя встреча SpB Haskell user group прошла просто замечательно - услышал много нового и интересного, да и сам что-то хорошее рассказал :)

В программе было три доклада:

  • "Комбинаторы сериализации" (слайды) - мой доклад.

  • "Свободные теоремы" (или "Теоремы нахаляву" - вольный перевод Theorems for free) (слайды) - доклад [info]deni_ok

  • "Функциональные структуры данных (часть вторая)" (слайды) - доклад [info]antilamer

(чуть позже возможно появятся фотографии и аудиозапись)

Я получил свой первый опыт чтения докладов широкой (да ещё и весьма интеллектуальной) публике, получив при этом массу fun-a. Смею надеяться - первый блин не вышел комом :)

Остальные доклады тоже весьма порадовали - и интересные результаты, получающиеся в результате вывода этих самых "халявных" теорем, и полезные и интересные техники, описанные Женей, вместе с его замечательными иллюстрациями :) и последующая мини-лекция о realtime-вычислениях и проблемах, с этим связанных, рассказанная Иваном Тарасовым ([info]_navi_), так сказать, в кулуарах.

Что же, с нетерпением жду следующих встреч! :)

Метки: , ,

Настроение:
artistic artistic
Музыка:
The Velvet Underground
* * *
SPJ "The implementation of functional programming languages"
Сегодня, просматривая свою коллекцию книжек и paper-ов по функциональному программированию, решил посмотреть, что там пишет Simon L. Peyton Jones в своей книге "The implementation of functional programming languages". И был приятно удивлён - как же классно он пишет! Хотел всего лишь прочесть вступление и зачитался! :) Меньше чем за 30 первых страниц книги получаем чёткое, сжатое, понятное и хорошо иллюстрированное описание таких тем:


  • синтаксис лямбда-исчисления (в дальнейшем ЛИ)

  • карринг

  • операционная семантика ЛИ

  • бета-редукция, альфа- и эта-преобразования и что они значат

  • порядок редукции, его оптимальность

  • нормальный порядок редукции

  • теоремы Чёрча-Россера

  • пример выражения, у которого нет нормальной формы

  • как выражать рекурсивные функции в ЛИ

  • Y-комбинатор

  • денотационная семантика ЛИ, отличие денотационной семантики от операционной

  • bottom _|_

  • строгость и ленивость функций

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

Дальнейший обзор книги )

Настроение:
geeky geeky
Музыка:
muse
* * *
Неисповедимы пути википедии
Весёлая, однако, штука - википедия! Читал статью про метасинтаксические переменные, а буквально через два-три перехода по ссылкам внутри статей - уже попал на статью про куннилингус! :) При этом узнал, что и до него, и после нежелательно чистить зубы и есть чипсы и сухарики :)

А в дополнение выпуск xkcd на эту же тему:
[xkcd.com - The problem with Wikipedia]

Метки:

Current Location:
kiev
* * *
QuickCheck
Вчера, с подачи [info]antilamer (спасибо за вдохновляющий поток эмоций! :)), поразбирался с QuickCheck - средством для тестирования функционального кода, которое основывается на проверках неких свойств, которые задаются относительно определённых функций и проверяются на случайно сгенерированных данных.

Классический пример: есть функция reverse для обращения списков. Тогда можно придумать такие достаточно ярко её характеризующие свойства:

propReverseUnit x       = reverse [x] == [x]                             
-- (то есть, обращая список из одного элемента - получаем тот же список)

propReverseAppend xs ys = reverse (xs++ys) == reverse ys ++ reverse xs
-- (обращая конкатенацию списков, получаем конкатенацию обращений частей 
-- в обратном порядке)

propReverseReverse xs   = reverse (reverse xs) == xs
-- (обращая обращение списка - получаем тот же список)

Теперь из-под ghci запускаем QuickCheck:
Main> quickCkeck propReverseReverse
OK, 100 tests passed

и - вот он, момент истины! - QuickCheck сгенерил 100 случайных списков, на которых проверил данное свойство и поскольку оно всегда выполнилось - выдал OK.

При этом свойства могут быть и посложнее нежели описанные выше - в них могут присутствовать необходимые для выполнения свойства условия, генерируемые данные могут быть определённым образом классифицированы, кроме этого можно создавать свои генераторы значений, в том числе для рекурсивных типов (легко!) и даже генераторы случайных функций!

Для того, чтобы дополнительно управлять случайными значениями, которые генерятся и направлять эти значения в нужное русло - существуют понятие "генератор", которые можно (и иногда нужно) описывать для своих и стандартных типов данных, а также некоторый небольшой фрэймворк, который позволяет эти генераторы комбинировать с помощью стандартных, довольно удобных и отлично продуманных комбинаторов - получая при этом новые необходимые генераторы.

На предстоящей встрече Spb Haskell User Group , как раз ожидается доклад по QuickCheck от Дмитрия Тимофеева ([info]dtim), который, думаю, будет весьма интересно послушать, при этом уточнив пока неясные для меня моменты.

В общем, весьма любопытная штука и немного необычный (по крайней мере для меня) подход к тестированию, который отлично работает в условиях отсутствия побочных эффектов и превращает процесс тестирования в весьма увлекательный процесс размышления над свойствами своей программы. Изначально QuickCheck был написан для Haskell и активно там используется, но поиск в гугле выдал и порт для Erlang .

Метки: , ,

Настроение:
geeky geeky
* * *
Котята в Киеве :)
У меня вот родились котята с месяц назад (мама - наша Маська, папа - некий сторонний перс), теперь ищем им хозяев.
На эту тему сделал здесь пост:

Пост про котят с фото

Там есть и фотки, и небольшое описание, и контакты.
А ещё сделаю превью одного котёнка здесь:

Был бы очень благодарен за помощь в раздаче, ибо в воскресенье утром (29.07) возвращаюсь в Петербург, и было бы весьма неплохо их к тому времени раздать. Котята весьма позитивные, игривые и пока неизбалованные, так что рекомендую :)
Спасибо!

Метки:

Current Location:
kiev
* * *
Киев - СПб
Вчера благополучно переехали в Санкт-Петербург, буду теперь некоторое время здесь жить :)
Старый номер телефона можете смело удалять, теперь контакты такие: +7 921 3782469.

У нас тут есть чукотские сказки, шахматы, автомобильная сирена по утрам и новый нескрипящий диван!
Все желающие повидать меня в СПб are welcome! :)

Кроме того, примерно 15 июля ещё вернусь на несколько дней в Киев.

Метки:

Настроение:
excited excited
* * *
Пример изоморфизма
Наткнулся на прикольный пример изоморфизма. Есть игра для двух игроков: каждый по очереди называет число от 1 до 9. Повторяться нельзя. Выигрывает тот игрок, который первым назовёт числа, сумма которых равна 15.
Спрашивается: какой известной игре эта игра изоморфна?
Комментарии пока скрываются :).

P.S. Изоморфизм - это по сути взаимно-однозначное соответствие между двумя множествами, которое сохраняет структуру этих множеств - то есть какой-то набор правил (аксиом), соответствующий множеству, будет выполняться в обеих множествах.
Например есть колода карт с зелёными рубашками и колода карт с синими рубашками. Между ними можно провести взаимно-однозначное соответствие, при этом каждой из них можно всё так же играть (то есть соблюдается определённый набор правил, которому соответствует каждая колода). Таким образом, это соответствие сохраняет структуру и потому может называться изоморфизмом.

UPDATE (ответ)
Более половины комментариев были верными - ответом является игра в крестики-нолики на магическом квадрате 3х3 (сумма чисел в котором по вертикалям, горизонталям и главным диагоналям которого равна 15).
Выглядит он вот так:

2 7 6
9 5 1
4 3 8

При этом я немного некорректно поставил условие: действительно, как справедливо отметили некоторые из отвечавших, следует ограничить условия победы тем, что суммировать можно три и только три числа из названных игроком (что соответствует победе тремя крестиками или ноликами, поставленными в ряд).

Спасибо всем за ответы, было интересно!

Метки:

Настроение:
geeky geeky
* * *
Белорусский арабский алфавит
Захотел я почитать в Википедии статью про DSL (domain specific languages) и не пожалел :) Набрал не в той раскладке "dsl", и по запросу "выд" английская Википедия достаточно неожиданно выдала мне с релевантностью 9,9% интересную статью про белорусский арабский алфавит. Поначалу я подумал, что это очередной википедийный вандализм (а-ля недавняя байка про МГУ), но нет.

Как оказалось, белорусский язык записывался в XVI-м веке арабскими буквами местными татарами, которые почти в абсолютном большинстве забыли родной язык, но не хотели терять свою религию и нашли такое решение: пересказать Коран на белорусском и записать его с помощью арабской письменности. Возникли проблемы с некоторыми звуками, которых изначально не было в арабском ("ж", "ч", "п", "дз", "ц", а также "у краткое"), но они были решены введением новых символов. Таким образом, возникли "китабы" (kitabs) - целые книги, записанные подобным образом - преимущественно религиозные и фольклорные.

Сейчас китабы хранятся в библиотеках АН Беларуси, АН Литвы, Вильнюсского, Петербургского и Казанского университетов, а также в частных коллекциях.
Такой вот интересный пример транслита.



Ссылки по теме:
Статья на русской Википедии
Более подробная статья о кетабах (англ.)
Метки:

Настроение:
weird weird
* * *
Haskell: комбинаторные парсеры Parsec.
Что же, в прошлый раз мы вспомнили формы записи операторов и рассмотрели написание простого вычислителя постфиксных выражений на Haskell. Следующим шагом является создание транслятора выражений из инфиксной формы - в префиксную. Однако, перед этим нам необходимо улучшить разбор выражения на токены, поэтому в данной статье мы рассмотрим монадические комбинаторные парсеры на примере модуля Parsec, а также использование их на практике.

Haskell postfix: часть вторая. Комбинаторные парсеры Parsec. )

Метки: , ,

* * *
Exaile и opensource
В очередной раз убеждаюсь, что хорошая штука opensource :)

Я пользуюсь Linux Ubuntu и недавно сменил основной аудио-проигрыватель с Amarok на Exaile, поскольку Amarok, будучи KDE-приложением, несколько тормозил при запуске в моём Gnome. Exaile - является некоторым подобием Amarok под Gnome, вполне приятный плэйер, в котором есть интеграция с last.fm, неплохой менеджер артворков, нотификации, работа с мультимедийными клавишами out of the box, приятный внешний вид и т.д. После перехода я обнаружил, что некоторых мелочей мне не хватает и решил сделать их сам.
Что же, получаем исходный код для разработчиков:

svn co svn://exaile.org/usr/local/svn/exaile/trunk trunk
и вперёд! :) Заодно познакомлюсь с Python и GTK.

Захожу на канал #exaile в IRC, знакомлюсь с одним из двух разработчиков Exaile - sjohannes, пытаюсь задавать какие-то вопросы. В принципе ребята на вопросы отвечают, но помогать в разборе кода особенно не хотят. Что ж, посмотрю сам.

Поначалу я реализовал простенькую фичу. Заключалась она в добавлении возможности "Load", которая параллельно очищала плэйлист и добавляла в него выбранный трек или альбом: добавил menu item "Load" в контекстное меню, навесил на него обработчик. В итоге всё вылилось в такой вот ticket с патчем.
Особого успеха у sjohannes этот патч не имел - сказал, что не думает что это особенно нужная функциональность, но, тем не менее, на следующий день пришло письмо от некоего благодарного пользователя, так что хоть кому-то он да понадобился :)

Вторая же возможность, которую я добавил, была навеяна похожей функциональностью Eclipse IDE и сразу понравилась разработчикам. Я говорю о возможности "Show in collection", которая может быть полезна при желании быстро перейти от трека в плэйлисте к соответствующему треку в коллекции (это важно при прослушивании случайных треков, при этом иногда хочется послушать полностью ту группу, которая только что играла и, как следствие, нужно искать её в коллекции, что возможность делает автоматически). В Eclipse этой возможности соответствует переход от текущего редактируемого файла к его ноде в дереве проекта. В итоге, я сделал ещё один патч.

Эта идея и её реализация уже гораздо больше впечатлила sjohannes, и он сказал, что непременно включит её в следующий релиз (см. UPDATE). Что ж, буду рад :)

Хочется отметить, что Python, как и обещалось многими, оказался действительно интуитивно понятным языком, с хорошим синтаксисом. Практически все вещи, что я делал почти наобум - работали именно так, как полагалось. Мне кажется, что это весьма важное качество языка - works as expected. Насчёт GTK и биндингов под Python - pyGTK, тоже ничего плохого сказать не могу, хорошая документация, поработал с деревом и его моделью без особенных проблем. Хотя здесь, конечно, моё мнение весьма поверхностно и сравнивать мне не с чем, ибо я никогда не занимался разработкой GUI под Linux.

Резюмируя, можно сказать, что теперь я на собственном опыте прочувствовал один из плюсов открытых исходных текстов - при определённой квалификации и желании можно достаточно просто реализовать нужные и вполне полезные вещи и, возможно, донести их другим, что не может не радовать.

UPDATE: Функциональность "Show in collection" добавили в Exaile в ревизии 2358 ("svn log -r 2358").

Current Location:
/home
Настроение:
geeky geeky
* * *
Haskell Postfix: часть первая. Операторы. Вычислитель постфиксных выражений на Haskell.
Недавно я встретил упоминание ещё об одном сайте, предлагающем разные математические и программистские задачи. Это Sphere Online Judge (http://spoj.pl). От популярного нынче "Проекта Эйлера" (http://projecteuler.net) отличается тем, что вводятся не ответы на задачи, а на сервер загружается сам код, который там компилируется и запускается на тестовых примерах. Решение одной из задач этого контеста привело к довольно интересным для меня результатам, о которых я решил написать небольшой цикл статей.

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

Содержание статей будет примерно таким:
1. Формы записи операторов (инфиксная, префиксная, постфиксная). Реализация на языке Haskell простого вычислителя арифметических выражений, записанных в инфиксной форме.
2. Преобразование инфиксной формы в постфиксную. Алгоритм "сортировочная станция" Дейкстры. Транслятор на Haskell. Использование комбинаторных парсеров Parsec для разбора выражения.
3. Реализация более полного эвалуатора, вычисляющего как арифметические выражения, так и функции.
4. Переход от вычисления значения выражения к вычислению типа выражения. Последствия в виде использования в реальной жизни для вывода типов выражения в ActionScript 3.

Тех, кому интересно - прошу к прочтению первой части :)

Haskell Postfix: часть первая. Операторы. Вычислитель постфиксных выражений на Haskell. )

Метки: , ,

* * *
Равны ли 0,(9) и 1? Периодические дроби.
Отвечавшим на мою анкету и думавшим над вопросом про 0,(9) посвящается :)

Как-то сидели мы с [info]martreya, [info]iiryna и [info]deadvom в пиццерии и мне почему-то пришёл в голову вопрос, который я позже задавал в анкете:

Равны ли числа 0,(9) и 1?

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

Как мы знаем, число - это одно из основополагающих понятий математики, мир чисел постоянно пополнялся на протяжении развития человечества. В первом классе мы изучали самые первые числа: 1, 2, 3... Эти числа называются натуральными, и их множество обозначается буквой N. В рамках этих чисел можно отлично выполнять операции сложения и умножения. Если же мы захотим применять вычитание, то из подсознания выплывает фраза вроде "Из 2 яблок нельзя вычесть 4" или что-то в этом духе. Таким образом, мы получаем какие-то ограничения, которые расширяются введением отрицательных чисел. Множество всех отрицательных и положительных чисел называется множеством целых чисел и обозначается буквой Z. В рамках этих чисел отрицание уже выполняется без всяких проблем (2 - 4 = -2).

Читать дальше )

Настроение:
mathy
* * *
Hello, space dog
Грядущему дню космонавтики посвящается.

Узнал такие вот факты о собаках-космонавтах.
В СССР чаще всего в космос отправляли именно собак, так как считалось, что они лучше всего переносят длительную вынужденную неподвижность, именно бродячих собак - из-за того, что они лучше переносят стрессы, и именно самок (сук) - из-за их темперамента и того, что им не надо поднимать ногу для понятного процесса :)

Первым живым существом с Земли, попавшим на Земную орбиту была собака Лайка. Её нашли, бродившей по улицам Москвы, затем она прошла конкурсный отбор среди трёх других собак. читать далее )

Музыка:
:Of the Wand and The Moon:
* * *
Geek-анкета
Вдохновившись начинаниями [info]martreya в области анкетостроения, я тоже решил "вспомнить молодость", но при этом перейти на новый качественный уровень, вооружившись знаниями в области IT и околоайтишного юмора.
Итак, вашему вниманию предлагается небольшой окологикерский опросник. Я надеюсь, что ответы на вопросы принесут вам несколько минут радости и подтолкнут к интересным размышлениям :)
Отвечать желательно на большинство вопросов, однако если вопросы вызывают затруднение или непонимание - пропускайте без проблем.

Кроме этого очень welcome предложения по поводу улучшения структуры и содержания анкеты, например внесения в неё интересных элементов - рекурсий, замыканий и т.д. и т.п. :)

1. Кто вы? (можно писать несколько своих алиасов :))
2. Вы человек или робот?
3. Ваша любимая операционная система.
4. Куда деваются программы, когда их удаляют? Есть ли небесный сервер?
5. Что даёт вам Интернет?
Читать дальше и отвечать :) )

Музыка:
Forseti - "Stern (Kim Larsen)"
* * *
Ванная, комбинаторы и волосы на лобке
Лёжа в ванной, думал о том, что ванная, в сущности, не очень удобное место для отдыха - здесь нельзя разместить ноутбук и нельзя даже взять с собой книгу (разве что ту, что совсем не жаль).
Здесь, конечно, доступны некоторые развлечения (обычно свойственные новорожденным), но лучше таки использовать её как надо - для расслабления :) Да, ещё там удалось попить джин-тоника из банки! :)

А, ещё задался там вопросом - зачем, интересно, волосы на лобке? Наверное можно занести куда-то в раздел "детские вопросы" :) Ответы и предположения - можно в комменты.

Ещё сегодня открыл для себя исчисление комбинаторов - вещь, которую мы совсем не изучали по дискретной математике, вполне интересно. Получается, что исчисление комбинаторов - это такое себе полупрограммистское исчисление без переменных. И комбинатор, по сути, представляет собой некий объект, который просто комбинирует свои входы (то есть те объекты, к которым он применён). А входы представляют собой те же объекты или комбинаторы. Они обычно обозначаются латинскими буквами и имеют названия а-ля "канцеллятор", "дупликатор" и т.д. В этом исчислении существует единственная операция - применение комбинатора. В общем, кому интересно - можно почитать здесь: http://en.wikipedia.org/wiki/Combinator (увы, в русской Википедии по слову комбинатор находится только Остап Бендер :) - что совпадает с большинством откликов на эту тему в реале :)

Настроение:
relaxed relaxed
Музыка:
Radioahead "Kid a"
* * *

Previous

Реклама

Настроить