0xd34df00d
30.10.2011 15:24
Ваш bash говно. Нужно было переименовать все файлы в текущей директории, убрав первые три символа и сделав четвертый заглавным.
На хаскеле однострочник пишется за 30 секунд: getCurrentDirectory >>= getDirectoryContents >>= (\names → mapM_ (\name → if name /= ".." && name /= "." then renameFile name (toUpper (name ... more →
0xd34df00d
28.10.2011 15:15
Введение в GADT на хаскельвики повеяло темплейтами.
0xd34df00d
28.10.2011 15:04
Подумываю описывать хаскель-мытарства в стандалон-блоге своем.
0xd34df00d
28.10.2011 11:56
Ну вот, не успел написать очередной тайпкласс, как врезался в потребность в fundep'ах либо type families.
Требуется описать класс для хреновин, которые могут сочетаться с функциями. У функций есть принимаемое значение, у хреновин есть возвращаемое значение. Так что будет что-то типа
data Composable a where
type ... more →
0xd34df00d
26.10.2011 22:36
OH FUCK.
Запуск софтины в 8 потоков с всего одним parmap'ом в нужном месте дает использование 6.5 ядер процессора. Хаскель оче няша.
0xd34df00d
22.10.2011 12:01
Посоны, мне тут рассказали, что в хаскеле и пейтоне оче похожий синтаксис. Нахуй так жить.
0xd34df00d
19.10.2011 18:52
Победить систему типов хаскеля сходу не удалось, теггированное вычисление якобиана Numeric.FAD'ом для функции в общем виде типа Num a => [a] → [a] не получилось, хуита какая-то.
Ладно, сейчас реализую хоть базовый алгоритм и получу хоть какие-нибудь результаты, а дальше буду заниматься красивостями.
0xd34df00d
19.10.2011 16:40
Оказывается:
> :t (\x → (x *** x)) undefined
(\x → (x *** x)) undefined :: Arrow a => a (b', b') (c', c')
В то же время:
> let x = undefined
> :t (x *** x)
(x *** x) :: Arrow a => a (b, b') (c, c')
Нахуй так жить?
0xd34df00d
19.10.2011 16:20
Спросил, почему join (***) :: a b c → a (b, b) (c, c):
[20:15] <Cale> d34df00d: So, in general fmap :: (a → b) → f a → f b, so for f = (e →), we get fmap :: (a → b) → (e → a) → (e → b), which is exactly the type of composition
[20:15] <Cale> and for join :: f (f a) → f a, we get (e → (e → a)) → (e → ... more →
0xd34df00d
19.10.2011 15:57
Почему мне даже на хацкеле хочется изъебываться? Почему для функции, делающей из [1,2,3] [[1],[2],[3]] хочется написать не listize = map (:[]), а listize = transpose . return ?
0xd34df00d
19.10.2011 15:09
Ух ты, ghc понимает unicode в исходниках, так что я могу писать vecFun f β ω = ...
Охуенно.
0xd34df00d
09.10.2011 13:01
Интересно как. Вот есть матрицы, например. Вот их можно там складывать, умножать очевидным образом. Делить можно (A/B = C <=> A = CB). Ну с negate еще понятно, наверное — умножить матрицу на скаляр (-1). abs можно каким-то раком ввести, хотя сходу неочевидно, как, норму шоле выбрать какую. signum — ну, тоже хуй ... more →
0xd34df00d
09.10.2011 10:36
Сегодня мне приснился обалденный сон. Весь наш мир был полностью type safe. У всех функций были правильные домены и кодомены, которые различались, когда надо, даже если пространства были изоморфны. Имена файлов и директорий имели разные типы. Да даже поссать нельзя было без проверки типов!
Проснулся с отличным ... more →
0xd34df00d
27.09.2011 22:26
Блядь, почему я всегда во что-то упираюсь? Почему всегда мой код выходит на какие-то грани, требует экспериментальных фич, упирается в ограничения системы типов, требует того, что только планируется? Я же, блять, нуб, какое там нахуй, мне только факториалы рекурсивные писать.
0xd34df00d
27.09.2011 22:10
Блин, и вот насколько разумно вводить тайпкласс Doublable для того, чтобы одни типы конвертировать к Double одной функцией, а другие — другой, но специализировать, как это делать, в одном месте?
0xd34df00d
26.09.2011 23:52
Джва часа ебался с хаскелем, его тайпчекером, зависимыми типами, семействами типов, функциональными зависимостями и прочей хуитой. В итоге все работает, теперь у меня БАШНИ и ВЫЧИСЛЕНИЕ ЯКОБИАНА.
Олсо, секс с хаскелем вполне заменяет прыщесекс. Тяны не нужны!
0xd34df00d
26.09.2011 23:21
[03:18] <DanBurton> @pl (\f g x y → f (g x y))
[03:18] <lambdabot> (.) . (.)
[03:19] <ulidtko> boobs!
[03:19] <ulidtko> wai~
[03:19] <DanBurton> +_+ not boobs....
[03:19] <magicman> (.).(.) is the owl-operator.
[03:20] <DanBurton> I call it compose2
Typical #haskell.
0xd34df00d
26.09.2011 21:29
Люди на freenode#haskell поразительно охуенны. Не то что @L29Ah на haskell@cjr.
0xd34df00d
26.09.2011 15:38
Генетические алгоритмы — это просто и понятно. Для функции z=xy + x²y² оно мне выдало наилучшее приближение за сто ... more →