Dmitry Antonyuk
21 Декабрь 2011 @ 18:46
Клёвая реализация сабжа от [info]antilamer:
data Tree a = Nil | Branch (Tree a) a (Tree a)

bfs t = [x | Branch _ x _ <- b]
  where
    b = t:[x | Branch l _ r <- b, x <- [l,r]]

Ленивость, все дела.

отсюда.
 
 
Dmitry Antonyuk
19 Апрель 2011 @ 09:53
Скажите, пожалуйста, кто что использует для arbitrary precision computations в Haskell? Интересует аналог BigDecimal в java - при делении задаём режим округления, можно использовать для денег. Ну и важно иметь человеческий Read/Show.

Кроме библиотеки Jeremy Shaw есть что-нибудь стоящее? Мне не нравится, что она не на hackage и у неё есть (небольшие) проблемы с делением.
 
 
Dmitry Antonyuk
20 Август 2010 @ 14:39
[info]_darkus_ перевёл "Розеттский камень". Я переводы практически не читаю, и до сих пор очень сильно сомневался в их необходимости. Но вот этот текст прочитал на русском (правда, изредка заглядывая в оригинал), что сэкономило моё время.

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

Спасибо!
Метки: , ,
 
 
Dmitry Antonyuk
10 Июнь 2010 @ 12:37
Ответ на комментарий от [info]thesz http://gaperton.livejournal.com/47460.html?thread=886116#t886116

Краткое введение. Я считаю, что мне xmonad дают значительно больше, чем может предложить макось. Под макосью и xmonad здесь подразумевается также набор программ, соответственно для мака и линукса. [info]thesz предлагает мне сначала ознакомиться с интерфейсом макоси.

Ответ.

Как мне ознакомиться с интерфейсом макоси и сделать это правильно?

Из описанных преимуществ макоси (мы же говорим об интерфейсе?), которые я встречал, дополни плз:

Меню наверху

Обычно (сильно бОльшую часть времени) я вообще не пользуюсь меню. Шоткаты делаю мою работу быстрее.

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

Вопрос так стоит - стоит ли ставить в преимущество то, что может дать незначительный прирост производительности, да ещё и в очень редких случаях?

Кнопка zoom

У меня xmonad! нет кнопок, нет необходимости менять размер окна так, как это принято в обычных wm. Задача, которую решает кнопка zoom, у меня решается автоматически, либо шоткатами по смене layout-а.

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

Dock

Я пользовался AWN и не понял конкретно в чём польза.

Запускать приложения и открывать их окна одним способом? Приложения, для которых это нужно, делают это сами (пример - firefox). Если нет - всегда можно написать скрипт, но у меня таких проблем не возникало, поэтому такого скрипта нет. Запуск приложений вообще очень редкая задача, гораздо важнее задача работы с ними.

Между окнами же я переключаюсь так, как это принято в xmonad шоткатами - смена воркспейса, если окно не в текущем, смена окна, если окно неактивно.

Искренне не понимаю, зачем нужна эта штука.

Finder + Spotlight / Quicksilver

Работал с beagle + deskbar-applet, с gnome do. Bash + мои скрипты делают то, что мне нужно лучше, специальные программы делают конкретный поиск ещё лучше.

Например, bash ведёт себя как кусок IDE, когда находит нужные мне java-файлы по camel-case маске, mutt + mairix ищет в моих письмах, а в документах можно поискать даже простым fgrep. Для запуска всех подряд программ dmenu + dmenu_path, для запуска конкретных - шоткаты в xbindkeys.

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

Но тут я вижу место для повышения удобства. Правда, пока руки не доходят сделать.

Safari

Я использую firefox + vimperator и uzbl. И действительно не понимаю, как заточенная под меня вещь может быть для меня хуже, чем написанная для всех?

Здесь, правда, ещё можно поговорить о скорости, говорят, сафари быстрый, не знаю. Но я пока говорю об интерфейсе.

Безумная красота

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

...

Вообще получается, что удобство макоси очень зависит от наличия мыши, верно? Я использую мышь 99% для веб-серфинга :)

P.S. Я работал на макбуке, но очень немного и совсем не по моему основному профилю, так что рассматривать это как хоть какое-то ознакомление не могу, но названия некоторых программ знаю, и даже их запускал! :)
Метки: ,
 
 
Dmitry Antonyuk
05 Июнь 2010 @ 03:33
Laby  
Мой сын второй день пишет на тикле.

Приятно наблюдать, как написав кусок программы, Стёпка её дебажит, а потом поднаторев, пишет уже достаточно большие куски, иногда полностью всю программу (такое редко). Маленькая модель разработки.
 
 
 
Dmitry Antonyuk
06 Март 2010 @ 11:50
Две библиотеки, о которых узнал из френд-ленты. Понравились.

1. mmtl via [info]permea_kra.

Очередная библиотека монад-трансформеров с фишкой. Позволяет не определять для каждой монады инстанс каждого монад-класса. Таким образом модуль с ReaderT не будет ничего знать о MonadWriter, тем не менее инстансы для

(а) MonadWriter w => MonadWriter w (ReaderT r (Writer w))
и
(б) MonadWriter w m => MonadWriter w (ReaderT r (WriterT w m))

будут выводиться. Т.е. теперь мы пишем свой монад-трансформер и у нас автоматом есть инстансы для всех имеющихся монад классов.

К сожалению, (а) и (б) реализованы как отдельные инстансы. Была бы ещё возможность описать это в отдельном - типа
MonadWriter w i, MonadTrans t => MonadWriter w (t i)


Написано, что "Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones"

2. Coroutine via [info]nponeccop.

lightweight session types для описания протоколов. Индексированная монада для представления линейных типов, собирание типов с помощью комбинаторов типов. Понравилась реализация дуальности типа клиента и сервера - очень просто и красиво.

Подробнее в презентации Haskell Session Types with (Almost) No Class
от Jesse Tov. Есть видео, но я его не смотрел.
 
 
Dmitry Antonyuk
19 Февраль 2010 @ 14:29
Пару лет назад на RSDN я показывал VladD2 связь query monad из HaskellDB с LINQ. Тогда он называл это бредом. Прошёл год или около того и он сам стал связывать HaskellDB и LINQ. Правда, к монадам отношение у него не изменилось - это способ связывания вычислений в цепочку (почти дословно).

А сегодня IB под впечатлением от того, что LINQ - это монады.

Откуда эта истерика по отношению к монадам? Почему не возникает такого нездорового ажиотажа вокруг моноидов? Они же гораздо абстрактнее, чище и прикольнее :-)

Причём я почти уверен (насчёт VladD2 больше, насчёт IB меньше), что у обоих представление о монадах мало связано с тем, что это математическая модель. Для них это скорее некий паттерн. Место монады в математике не видно - так, приёмчик. Неудивительно, что VladD2 называет это извращением.

Что ли написать свой туториал по монадам? :-)
 
 
Dmitry Antonyuk
09 Февраль 2010 @ 22:31
Уже, наверное, многие видели, но всё таки оставлю ссылку.

http://www.yapfiles.ru/files/69305/scale_of_universe.swf

Очень понравилось.
Метки: