Переводы. Опрос.
Aug. 20th, 2010 02:39 pm![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Тем не менее интересно было бы узнать, насколько важны переводы для IT-шников. Ответьте, пожалуйста, у кого есть сложившееся мнение по этому поводу - стоит ли вообще оно того, чтобы переводить? Возможно, есть какие-то граничные случаи и общего ответа нет - тогда расскройте, если можно.
Спасибо!
Uniplate для рекурсивных данных
Feb. 8th, 2010 10:16 amАналог uniplate, не зацикливающийся на рекурсивных данных. На основе кода
permea_kra (спасибо!).
Код на hpaste (отсюда)
Пример использования
Работаем...
Ключевые слова: SYB, StableName, unsafePerformIO
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Код на hpaste (отсюда)
Пример использования
data Rose = Rose { roseId :: Int, roses :: [Rose] } deriving (Data,Typeable) testRose = let a = Rose 1 [b,c] b = Rose 2 [a,c] c = Rose 3 [a,b] in a
Работаем...
> [id | Rose id _ <- recUniplate testRose] [1,2,3]
Ключевые слова: SYB, StableName, unsafePerformIO
Сериализация взаимно-рекурсивных данных
Feb. 5th, 2010 01:23 pmНа RSDN Tonal- задаёт вопрос о сериализации взаимно-рекурсивных данных.
Очевидно, что при сериализации рекурсивных данных необходимо не сериализовать уже сериализованные данные, дабы избежать цикла. Для этого в том месте, где имеется связь со следующим рекурсивным звеном, можно сохранить ссылку.
Поэтому в голову приходит замечательный пакет data-reify от Andy Gill. О его применении можно прочитать в статье Type-Safe Observable Sharing in Haskell.
Смысл в том, что мы можем разложить рекурсивные данные на нерекурсивные данные со ссылками - то, что нам и нужно.
( Read more... )
Покритикуйте.
Очевидно, что при сериализации рекурсивных данных необходимо не сериализовать уже сериализованные данные, дабы избежать цикла. Для этого в том месте, где имеется связь со следующим рекурсивным звеном, можно сохранить ссылку.
Поэтому в голову приходит замечательный пакет data-reify от Andy Gill. О его применении можно прочитать в статье Type-Safe Observable Sharing in Haskell.
Смысл в том, что мы можем разложить рекурсивные данные на нерекурсивные данные со ссылками - то, что нам и нужно.
( Read more... )
Покритикуйте.
Partial signatures
Jan. 13th, 2010 12:35 pm![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Смысл в том, чтобы иметь возможность задавать отдельный констрейнт на тип функции, а всё остальное пусть выведется автоматически.
Второй случай рулит.
Предыстория: http://thesz.livejournal.com/950788.html?thread=7471620#t7471620
Т.е. предполагалось, что любой
( Read more... )
Т.е. предполагалось, что любой
mdo
можно развернуть в letrec
(т.е. do
без mfix
).( Read more... )
Interruptable state
Feb. 19th, 2009 08:35 pmПонадобилось мне состояние, вычисление которого можно прервать в любой момент. Комбинатор
Вот как тут описать комбинатор
( Read more... )
guard
не подходит тем, что его просто нет для State
. if/then/else
не устравает, потому что иногда прерывать необходимо в любом месте, например, в одной из вызываемой функции рекурсивной функции:loop = do modify (+1) check loop check = do s <- get if s == 42 then interrupt else return ()
Вот как тут описать комбинатор
interrupt
?( Read more... )
downcasting
Feb. 5th, 2009 12:15 pmDowncasting - операция, как известо, опасная. К сожалению, совсем избавиться от неё нельзя1. Например, в случае, если мы работаем с колбэками, принимающими параметры, типы которых надо понизить в самих колбэках. Или вспомним обычный метод
Но, раз нельзя избавиться, то мы можем по крайней мере постараться снизить его опасность. ( Read more... )
equals
в Java.Но, раз нельзя избавиться, то мы можем по крайней мере постараться снизить его опасность. ( Read more... )