Мохнатые уроды и моральные пёзды. Войти !bnw Сегодня Клубы
УНЯНЯ. У нас есть немножечко инфы об этом пользователе. Мы знаем, что он понаписал, порекомендовал и даже и то и другое сразу. А ещё у нас есть RSS.
Теги: Клубы:

cabal sandbox + cabal repl = ♥
#7PYPK7 (9) / @plhk / 3439 дней назад
Ну всё, теперь точно готов для продакшона {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE TemplateHaskell #-} import qualified Language.C.Inline as C C.include "<stdio.h>" C.include "<math.h>" main :: IO () main = do x <- [C.exp| int{ printf("Some number: %.2f\n", cos(0.5)) } |] putStrLn $ show x ++ " characters printed."
#4IFF4I (2+1) / @plhk / 3507 дней назад
Поясните для тупых короч Дано: data Req = A | B data Resp = Ra | Rb | Rc Куда нажать, чтобы можно было писать только функции A -> Ra, B -> Rb, B -> Rc, а A -> Rb и A -> Rc было писать нельзя?
#LKLGJP (12) / @plhk / 3656 дней назад
#OFQ1QU (3) / @plhk / 3758 дней назад

Говнячить одноразовые скрипты на хачкиле довольно удобно получается, не хуже бидона какого-нибудь.
Захотел скачать видосы отсюда: https://www.scss.tcd.ie/Edsko.de.Vries/ct/catsters/linear.php

Prelude> page <- readFile "linear.php" (лол, HTTP-4000 не может в https)
Prelude> :m + Text.HTML.TagSoup
Prelude Text.HTML.TagSoup> let a = [x | x@(TagOpen "a" _) <- parseTags page]
Loading package bytestring-0.9.2.1 ... linking ... done.
Loading package array-0.4.0.0 ... linking ... done.
Loading package deepseq-1.3.0.0 ... linking ... done.
Loading package containers-0.4.2.1 ... linking ... done.
Loading package text-0.11.2.3 ... linking ... done.
Loading package tagsoup-0.12.8 ... linking ... done.
Prelude Text.HTML.TagSoup> let a' = filter ((TagOpen "a" xs) -> maybe False (isInfixOf "youtube") (lookup "href" xs)) a

<interactive>:5:52: Not in scope: `isInfixOf'
Prelude Text.HTML.TagSoup> :m + Data.List
Prelude Text.HTML.TagSoup Data.List> let a' = filter ((TagOpen "a" xs) -> maybe False (isInfixOf "youtube") (lookup "href" xs)) a
Prelude Text.HTML.TagSoup Data.List> let a'' = map ((TagOpen "a" xs) -> fromJust $ lookup "href" xs) a'

<interactive>:8:37: Not in scope: `fromJust'
Prelude Text.HTML.TagSoup Data.List> :m + Data.Maybe
Prelude Text.HTML.TagSoup Data.List Data.Maybe> let a'' = map ((TagOpen "a" xs) -> fromJust $ lookup "href" xs) a'
Prelude Text.HTML.TagSoup Data.List Data.Maybe> :m + System.Process
Prelude Text.HTML.TagSoup Data.List Data.Maybe System.Process> mapM_ (\u -> system $ "youtube-dl " ++ u) a''

#MT6REC (42) / @plhk / 4300 дней назад

Ну в общем потыкал эти ваши лензы. Не, ну чо, реально удобно ковыряться в стейте и
теребить поля рекордов. По видосу эдика было как-то неочевидно. Ехал профунктор
через профунктор сунул моноид в эндофунктор.
Делал вот эту хуйню:
http://www.linux.org.ru/news/doc/8930414/page1#comment-8934133
(Автор камента правда мудак, так и не ответил, правильно ли я понял задачу,
но это в общем-то не важно).
Cмешной понос: http://bpaste.net/show/I3MXDooyj8v1K3gEpAlu/
Есть только подозрение, что это задротство с операторами уровня J назавра забудется.

#M9GUK4 (4) / @plhk / 4309 дней назад

http://www.haskell.org/pipermail/beginners/2013-March/011550.html
Похуй манатки, ясно как запилить.
Какой лучше применить комбинатор на замену явной рекурсии?
У меня получилось так:
fix (\r s -> let (a::String, b::String, c::String) = s =~ "[A-E]" in if null s then s else a++(map toLower b)++(r c))
Но это как-то уебищно.
inb4 map (\c -> if isJust (find (== c) ['A'..'E']) then toLower c else c)

#OF4738 (5) / @plhk / 4312 дней назад

Вот часто пишут, что изучение хаскиля сделает вас лучше писать на других языках.
У меня обратная ситуация, например. На других языках писать становится очень ссыкотно, и
постоянно лезет эта функциональная писечка (типа наебашить сто тыщ мелких функций и
потом комбинировать их по-всякому, или там ADT).
Недавно написал что-то в духе
struct foo {
int *bar;
...
}
struct foo *f = calloc(sizeof(*f));
...
if (...) {
f->bar = malloc(sizeof(int));
(*f->bar) = 5;
}
чтобы получить Maybe int = int * | NULL.
Пиздец, вощем, пацаны, не учите хаскиль, если вы тупой.

#Q1K8YW (2+1) / @plhk / 4313 дней назад
Заметка на память (как профайлить хачкиговна) 1) собрать нормально 2) собрать с профайлингом runhaskell Setup.hs configure --enable-executable-profiling --ghc-options="-prof -fprof-auto -rtsopts" 3) запускать с +RTS -p Библиотеки собирать с --enable-library-profiling.
#JQ419I (4) / @plhk / 4320 дней назад
Лень было собирать sdcv, изобразил такой понос: https://github.com/polachok/hdict С трансформерами наебался, правда, потом переделаю. IO (WriterT (IO Maybe a)) это ололо. Сначала было вообще IO (WriterT (IO Maybe (IO a))), но потом я немножко пришел в себя. Алсо, как всегда, реквестирую илиту, пусть расскажет мне как глобально и надёжно читать файлы, например.
#EC7X6D (10) / @plhk / 4321 день назад
Потерял анальную девственность с Template Haskell. Код у всех такой уёбищный → http://ompldr.org/vaGsxNA/s.png ← или я один лошара? Алсо, поделитесь секретами бытия, как в хачкиле не уходить за овер 100 символов в строку.
#D8FFBZ (44) / @plhk / 4324 дня назад
Поделитесь историями успеха использования Control.Lens. Где-то видел статью "лензы для быдла", но потерял. Вощем, приглашаю в этот итт тред тех, для кого Costate Comonad Coalgebra не пустой звук.
#Z2I4T5 (12) / @plhk / 4325 дней назад
http://i.imgur.com/rxec4.png Everything is clear now!
#RWFZ97 (2+1) / @plhk / 4365 дней назад
https://github.com/bitc/vim-hdevtools ← пушка вообще
#QHXW8Z (0) / @plhk / 4365 дней назад
Есть вообще нормальные бложеки про haskell? В духе 24 days of hackage (http://ocharles.org.uk/blog/) Cкладывается такое впечатление, что все тексты про хаскель делятся на 3 типа: 1) хелоуворды ("тут есть map! на сишке я бы это писал две недели!") и монад туториалы ("пацаны, я все понял про монады. ща поясню по хардкору"); 2) общие рассуждения ("хаски делает делает душу чище и приближает к богу"); 3) мотан ("как я хитро изъебнулся и заюзал какую-то хуйню из алгебры/теорката при написании fizzbuzz'a").
#AZ2Z6I (1+2) / @plhk / 4384 дня назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.