Home

Advertisement

Customize

deniok

Locations of visitors to this page

Nov. 16th, 2009

12:27 am - Видит око да зуб неймёт

Ижевские люди издали перевод хорошей книжки John C. Mitchell, Foundations for Programming Languages и лежит он тут, но приобрести его нет никакой возможности. Я, по крайней мере, не могу справиться с этим интернет-магазином :(

Nov. 13th, 2009

02:10 pm - Про монады

Всякий знает, что монады в Хаскелле вводят как класс типов с парой функций

return :: a -> m a
(>>=) :: m a -> (a -> m b) -> m b
Некоторые также знают, что в теории категорий монады вводятся несколько по-другому. Если прямо переписать категорийное определение на Хаскелле (см. также замечание в конце текста), получим
return :: a -> m a
join ::  m (m a) -> m a
(Ну, на самом деле, return в ТК принято звать η (эта), а join - μ (мю). UPD: А [info]zelych в комментариях говорит, что здесь следует упомянуть, что "монада в категориях -- это функтор + мю + эта". Следует, упоминаю.) Мы видим, что в этих двух определениях return один и тот же, а вот биндер (>>=) и join - разные. Поскольку на фундаментальном уровне оба эти подхода описывают одно и то же, биндер (>>=) и join должны выражаться друг через друга. Попробуем сделать это, руководствуясь исключительно типами.

Read more... )

Nov. 4th, 2009

03:51 pm - Трудности вывода типов высших порядков

Спрашивают:

А можно пример типов первого и высших порядков?
Для меня это звучит примерно как "выводимы типы только с линейными зависимостями", но я до этой области никак не доберусь, чтобы разобраться.


Отвечаем... )

Oct. 23rd, 2009

10:26 pm - Монеты и взвешивания

Вынесу-ка коммент как пост.

Во френдленте потихоньку обсуждается классическая задача про 12 монеток с одной фальшивой среди них, которую нужно найти за 3 взвешивания (и определить тяжелее она или легче настоящих). И ее обобщение на случай m монеток и n взвешиваний.

Троичные коды Хэмминга под катом...  )

Oct. 16th, 2009

10:48 pm - В топку газоскрёб!

Для меня талибы в Афганистане перешли черту, после которой война против них превратилась в цивилизационную необходимость, когда они взорвали две статуи Будды, высеченные в скале в Бамиане.

Похоже, Газпром идет по их стопам.

05:09 pm - Как нам посечь композицию: point-free на стероидах

На RSDN nikov последнее время пишет в point-free стиле на стероидах, используя конструкции имеющие "довольно ясный интуитивный смысл (c)". Типа

fpower = (appEndo.).(mconcat.).(.Endo).replicate
Поскольку я когда-то взвалил на себя ношу по несению point-free стиля в массы, придется писать мини-туториал.

Как нам посечь композицию... )

Jun. 23rd, 2009

10:20 pm - Открыл сезон

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

На яхте на дамбу морского канала

Jun. 19th, 2009

09:00 pm - По направлению к COQ'у

Simon Peyton Jones, Chung-Chieh Shan и Oleg Kiselyov обещают статью "Fun with type functions", а пока выложили слайды. После впечатляющих примеров на Хаскелле с использованием индексированных семейств типов и функций над типами, радует замечание на последнем слайде:

At some point it may be best to say “enough fooling around: just use Coq”. But we aren’t there yet.
Хорошее, годное замечание.

Tags: ,

May. 29th, 2009

10:03 pm - Удивительный факт

Этот пост будет интересен любителям математики
(с) [info]avva

Сегодня обсуждали некоторый факт из теории вероятностей. Для меня удивительный, возможно, из-за того, что у меня не матмеховское, а физфаковское образование :)

Вот есть у нас несколько значений xi (i=1,2,...,n) (для простоты равновероятных, хотя это не важно) и мы хотим определить каким-то образом среднее x. Ну задаем стандартную меру отклонения (x-x_i)^2, суммируем по всем i, и ищем минимум по x. Выходит метод наименьших квадратов; оптимальный x равен сумме всех xi деленной на n. Получается, что x - обычное матожидание, это само по себе довольно интересно (как метод его введения), хотя и ясно интуитивно.

А если в качестве меры отклонения взять не квадрат, а модуль |x-x_i| и искать минимум суммы модулей? Какой тогда выйдет оптимум? Результат оказался для меня удивительным, я никогда не увязывал получившуюся величину (какую кстати?) с оптимизацией по такой мере.

Read more... )

09:47 am - Знаете ли вы, что...

В GHCi можно задавать многострочные let-определения функций, пользуясь скобочками :{ для входа в моду такого определения и :} - для завершения этой моды

Prelude> :{
Prelude| let { g op n [] = n
Prelude|     ; g op n (h:t) = h `op` g op n t
Prelude|     }
Prelude| :}
Prelude> g (*) 1 [1..4]
24
Правда, layout не поддерживается.

Tags: ,

May. 8th, 2009

10:51 pm - Прекрасное

Я лежу под столом, читая "A Brief, Incomplete, and Mostly Wrong History of Programming Languages"

1970 - Niklaus Wirth creates Pascal, a procedural language. Critics immediately denounce Pascal because it uses "x := x + y" syntax instead of the more familiar C-like "x = x + y". This criticism happens in spite of the fact that C has not yet been invented.

1972 - Dennis Ritchie invents a powerful gun that shoots both forward and backward simultaneously. Not satisfied with the number of deaths and permanent maimings from that invention he invents C and Unix.

...

1990 - A committee formed by Simon Peyton-Jones, Paul Hudak, Philip Wadler, Ashton Kutcher, and People for the Ethical Treatment of Animals creates Haskell, a pure, non-strict, functional language. Haskell gets some resistance due to the complexity of using monads to control side effects. Wadler tries to appease critics by explaining that "a monad is a monoid in the category of endofunctors, what's the problem?"


Apr. 14th, 2009

12:58 am - PR

У нас в SoftJoys последнее время происходят встречи петербургской группы alt.net. 4я встреча состоится в четверг, 16го Апреля в 19:00.
Встречи группы проходят по адресу Биржевая Линия дом 14, офис 409 (4й этаж)

Тема: Функциональное программирование (на языке F#).

Я пойду, если кто-то из френдов заинтересуется - welcome. Единственное, нужно зарегистрироваться: http://spbalt.net/Home/Meetings/4


Карта

Mar. 10th, 2009

04:34 pm - Отличное

И вот я подумала, что в школах как-то совершенно мало внимания уделяется процессу научных открытий. Рассказывают, конечно, что один ученый посмотрел в микроскоп и сформулировал клеточную теорию, а этот посмотрел на галапагосских вьюрков и сформулировал эволюционную теорию. Но как вообще они до этого дошли, как они сообразили, как мыслили? И вот в результате, не смотря на то, что школьная программа вполне академическая, там рассказывают правильные вещи, однако это все предлагается принять фактически на веру. У школьника нет критериев оценки достоверности и он решает: принят ли мне на веру креационизм или дарвинизм? Тут уж действительно как Бог даст. Иначе я не могу объяснить расцвет мракобесия в обществе.

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

Mar. 2nd, 2009

08:43 pm - Ярмарка тщеславия

я щитаю что топ 3 RSDN этой весной хорош как никогда :)

Женю [info]antilamer'а с его монадами конечно не догнать, но я зато ловко вырулил на типоклассопедии :)

Feb. 27th, 2009

10:52 am - Лямбда-куб, статья в русской Википедии

Каждый должен посадить дерево, построить дом, воспитать ребенка и написать статью в Википедии.

Критикуйте, если что не так, а ещё лучше правьте прямо там.

Feb. 26th, 2009

11:30 am - Coq. статья в русской Википедии

не могу не пропиарить
http://beroal.livejournal.com/11759.html

Tags: ,

Feb. 5th, 2009

09:46 pm - Просматривая варианты ЕГЭ

Из ЕГЭ по информатике:

Запишите значение переменной b после выполнения фрагмента алгоритма:


Ну понятно, что a=a*2 это iterate (*2), b=b+a это foldr (+), но вот что делать с порядком "инициализация-проверка-удвоение-шаг свертки" не очень понятно, отсюда некрасивый лишний map (*2).

Prelude> foldr (+) 1 $ map (*2) $ takeWhile (/= 256) $ iterate (*2) 1
511
Ох уж эти алгоритмы с состоянием; такая гадость :)

01:41 am

Я сдал ЕГЭ по русскому языку!

Моя оценка 4!
Ответил правильно на 29 из 30.

Сдай ЕГЭ онлайн!
Росбалт



Черт, недобрал, из-за страдательного причастия :(

UPD: С математикой-то всё проще :))

Я сдал ЕГЭ по математике!

Моя оценка 5!
Ответил правильно на 10 из 10.

Сдай ЕГЭ онлайн!
Росбалт

Jan. 23rd, 2009

01:46 pm - Ненормализуемая вертушка

Придумал задачку по лямбда исчислению.

Общеизвестен лямбда-терм, не имеющий нормальной формы

(\x.xx)(\x.xx)
Этот терм обладает следующим свойством: он воспроизводит сам себя при каждой бета-редукции, ведя себя по отношению к ней как экспонента по отношению к дифференцированию.

А теперь задача: написать не имеющий нормальной формы терм, который бы вел себя как e^(-x). То есть при первой бета-редукции он должен превращаться во что-то другое, а при следующей возвращаться к исходному виду. Моя версия такого терма (flipflop) под катом белым цветом
Ответ тут, белым цветом... )
Может кто придумает попроще?

UPD: Эх, а у меня-то решение неправильное :) (Потому что у меня аж шесть шагов) Правильное - у [info]lomeo в комментах.

Jan. 1st, 2009

06:39 pm - постновогоднее

А вот кому Билли, в качестве рассольчика? Налетай!



UPD:

Вот ещё душевное

Navigate: (Previous 20 Entries)

Advertisement

Customize