elton
Здарова, у меня взырвается мозг с этими байтстрингами, помогите разобраться пор фавор. Код: {-# Language OverloadedStrings #-} import Network.HTTP.Simple import Control.Monad import Data.Char import System.Random import System.Environment import qualified Data.ByteString as S agents=["example1","example2"]; len=subtract 1 $ length agents genHeaders::IO [(a,S.ByteString)] genHeaders=do ua<-pickrandom agents ka<-randomRIO(110,120)::IO Int ref<-genStr (-1) [] return [("user-agent",ua),("Cache-Control","no-cahce"), ("Accept-Charset","ISO-8859-1,utf-8;q=0.7,*;q=0.7"), ("Referer","http://www.google.com/?q="++ref), ("Keep-Alive",(show ka)), ("Connection","keep-alive")] --main=getArgs >>= parseArgs >>= wordPressDos main=do h<-genHeaders sendreq h "http://locahost" sendreq headers host=(\req->httpNoBody $ setRequestHeaders headers req) =<< (parseRequest host) parseArgs=return . head wordPressDos=print pickrandom list=fmap (list !!) $ randomRIO (0,len) --genStr::Int->[Char]->IO [Char] genStr size str | size==(-1) = genStr 13 str | size==0 = return (S.pack str) | otherwise =join $ (randomRIO(65,90)>>=(\x->return (genStr (size-1) ((chr x):str))))
Kirill
а в чём вопрос?
elton
ща я скину выхлоп
elton
в общем getStr возвращает строку, а должна байтстроку, поэтому внутри генератора задан тип стринг из-за строки ".."++ref
elton
как пофиксить
elton
я подписал в конце S.pack, как видно в коде
elton
но это дало еще больше выхлопа на ошибки
elton
сигнатура закомечена, если не заметили
Andrey
++ - это для строк <> - это для моноида
Kirill
ещё genHeaders::IsString a => IO [(a,S.ByteString)]
Kirill
к примеру
Kirill
в getStr путаются типы
Kirill
S.pack пакует [Word8], а у тебя String, т.е. [Char]
Kirill
последний кейс там проще в ду-нотации
Kirill
| otherwise = do x <- randomRIO(65,90) genStr (size-1) ((chr x):str)
Kirill
а вообще есть ramdoms
elton
а как чар конвертнуть тогда
elton
или заменить функцию
elton
chr
Cheese
S.pack пакует [Word8], а у тебя String, т.е. [Char]
в соседнем модуле Data.ByteString.Char8 как раз есть искомый pack
Kirill
убрать просто chr
Kirill
и тип аккумулятора будет [Word8]
Alexander
в no-cache опечатка кстати
Alexander
а про остальное вроде ответили
Anonymous
@nzvtrk будет жить. Поприветствуем!
Artem
Всем доброго времени суток)
Artem
Хотел у Вас спросить(очень банальный вопрос), но все же: За что Вы любите Haskell(его ленивый и чисто функциональный подход в решении задач)?
Сергей
Можно конечно чесать про безопасность и всё такое, но глубинная причина именно в этом
Kirill
на хаскеле очень удобно рефакторить код, когда компилятор оказывает офигенную помощь, которые случаи рефакторинга из того, что делал и получалось легко и непренуждённо, я просто не представляю можно ли вообще сделать без косяков в каком-нибудь питоне, скажем
кана
Хотел у Вас спросить(очень банальный вопрос), но все же: За что Вы любите Haskell(его ленивый и чисто функциональный подход в решении задач)?
я постепенно начал рассматривать языки как выборки фич и соединяющий их клей, в хаскеле просто этих фич больше всего, и они очень ненавязчивы в плане реализации, в естественном виде так сказать (пусть даже это может быть неудобно для программиста, это максимально гибко)
a66ath
О, у меня такая же философия
Ты это, не септапод часом?
Anonymous
Можно писать большие приложения и самому их поддерживать с удовольствием. С другими [стиральными порошками] получается, как всегда.
Сергей
Ты это, не септапод часом?
Я не знаю кто это или что это
A64m
Хотел у Вас спросить(очень банальный вопрос), но все же: За что Вы любите Haskell(его ленивый и чисто функциональный подход в решении задач)?
авторы что-то читают, не хотят чтоб программист страдал, потому в языке есть какие-то удобства, да еще и со временем получше становится типичный автор языка просто велосипед с квадратными колесами делает, а иногда еще и с гвоздями на седле, чтоб программисту жизнь медом не казалась, так что выбирать особенно и не из чего
Anonymous
Сразу делать велик - наверное слишком амбициозная задача. Может, начинать с самоката, и потом добавлять остальное?
Сергей
Гептапод точнее
Гептапод - это типа инопланетянин? Ну да. И я не один такой. Нас 857
a66ath
Гептапод - это типа инопланетянин? Ну да. И я не один такой. Нас 857
Просто заметил что аватарка похожа на их письмена :D
Сергей
Ага
Сергей
Вот так
elton
хм а если я сам заблуждаюсь
elton
это все еще дзен?
Сергей
хм а если я сам заблуждаюсь
Ну это не возможно
Alexander
Пруф? Открытая репа или не было! ;)
Открыта она: https://github.com/Enecuum/Node
Зигохистоморфный
Открыта она: https://github.com/Enecuum/Node
Наверное было бы не плохо ещё оптимизашки от Олега втулить для фри монады
Alexander
Оптимизации будут тогда, когда станет ясно, что они нужны. И не раньше, чем появятся графики с показателями (у меня в планах это в ближайшие две итерации начать делать)
Зигохистоморфный
К тому же недавно в кметтовском стриме он как раз разбирал это
Alexander
Нельзя просто так брать и "оптимизировать", даже если очень хочется
Alexander
Может выясниться, что это не главное место, на которое нужно тратить услилия. А главное, оно, например, в сетевом взаимодействии
Alexander
В общем, никаких оптимизаций, пока сама проблема не обозначена
Alexander
А перевести это на Church, например, не так уж и сложно
Alexander
Или что-нибудь другое. У меня был опыт оптимизации free-кода (моя stm либа, причем Haskell и C++). С Кметовскими и Олеговскими предложениями по оптимизации ознакомлюсь
Зигохистоморфный
Inlining derived typeclass methods - Stack Overflow https://stackoverflow.com/questions/52601129/inlining-derived-typeclass-methods
Alexander
Спасибо :)
Зигохистоморфный
Спасибо :)
Это не про оптимизации)
Апач
Ещё один нубский вопрос - как сделать двусвязный список средствами хаскеля
Апач
Как сделать связь в другую сторону? Подозреваю что где - то тут ленивость засела, но не могу понять где.
Алексей
Tying the knot
Апач
??
Апач
Комбинатор неподвижной точки порядка 2?
Алексей
Это общее гуглабельное название метода
Зигохистоморфный
Зигохистоморфный
https://github.com/Mojang/DataFixerUpper/blob/master/src/main/java/com/mojang/datafixers/kinds/K2.java https://github.com/Mojang/DataFixerUpper/blob/master/src/main/java/com/mojang/datafixers/kinds/K1.java :D
Anonymous
@hollyyymollyyy будет жить. Поприветствуем!
Dmitry
Haskell. Zipper — производная от типа https://www.lovemedia.net/articles/haskell-zipper/
Artem
Добрый день всем
Artem
Все еще борюсь с проблемным ботом
Artem
ShouldBeDeleted msg -> model <# do fetch $ banUser msg fetch $ deleteMessage msg return NoOp
Artem
Все еще не пойму, как получается, что дальше fetch $ banUser msg не идут вычисления
Алексей
Может там монада, короткозамыкающая?
Artem
Это как?
Artem
@PineappleZombie, и что с этим можно сделать?
Алексей
Что-нибудь вроде ExceptT m
Алексей
Не вызывать throwException или как его?
Алексей
Ну или просто блосает где-нибудь исключение