IC
ну у меня специфические требования были, тебе наверно и не нужно
IC
если у тебя один процесс лопатит из сокета в очередь, а другой из очереди в сокет, то и линкуй их друг на друга. ведь ни запросы без ответов, ни ответы без запросов не являются рабочим состоянием
Leonid 🦇
у меня из сокета лопатит куда захочет юзер
Leonid 🦇
Считай что клиент может захотеть по треду на стрим, и всё это по одному коннекшену.
Leonid 🦇
И мне нужно и в обработчиках стримов поднять эксепшон, и в треде в который владеет тредом с клиентом
Leonid 🦇
с клиентом который там сокет читает и по очередям стримам раздаёт
Leonid 🦇
дело в том что это может быть один и тот-же тред
Leonid 🦇
Проблемы прода это вам не теоркат и зигохистоморфные препроморфизмы
IC
чот сложнаа
parket
Проблемы прода, как известно, шерифа не интересуют 😂
Alexander
Alexander
Denis
Leonid 🦇
откуда можно стырить православный менеджер таймаутов?
Leonid 🦇
http://hackage.haskell.org/package/auto-update-0.1.4/docs/Control-Reaper.html#t:Reaper вот эта дичь из Warp?
Ilya
А вот такая мысль сейчас пришла. Почему стримы объявлены не в синтаксисе рекордов?
https://hackage.haskell.org/package/Stream-0.4.7.2/docs/Data-Stream.html
Вот как можно было бы сделать:
import Prelude hiding (head, tail)
data Stream a = Cons {head :: a, tail :: Stream a}
-- Теперь можно пользоваться синтаксисом обновления рекордов
newHead x xs = xs {head = x}
-- Теперь можно пользоваться head и tail в левой части клаузов
secondElem Cons {tail = Cons {head = x}} = x
Преимущества очевидны, недостатки есть?
Для классических списков это всё тоже актуально, но хаскель (пока) не поддерживает рекорды с инфиксным конструктором, я попробовал.
Leonid 🦇
Alexander
Maxim
можно как-то
a <- view lens1
magnify lens2 $ smth a
записать в одну строку? все происходит в ReaderT foo IO ()
Зигохистоморфный
fmap?
Maxim
м?
Зигохистоморфный
или даже >>=
Maxim
ну я попробовал magnify lens2 $ smth =<< ask lens1, но чёт не компилится
Зигохистоморфный
view lens1 >>= magnify lens2 . smth
но я не уверен
Maxim
меня устраивает в две строки, просто любопытно можно ли
Maxim
хм, через композицию видимо надо, да
Зигохистоморфный
хм, а что если views?
Maxim
о, magnify lens1 . smth =<< view lens2
Maxim
интересно что мне скажут на ревью
Anatolii
а кто-то HXT пользовался?
Alexander
@dmalkr
Alexander
насколько я помню
Anatolii
я таблицу html хочу перегнатьв [[String]]
Anatolii
получается только в [String]
Maxim
ну так lens должен выполняться во внешнем ридере
Maxim
и там все-таки view а не ask
Maxim
а, ты типа намекаешь что скобки надо по-другому поставить
Maxim
ну я и сделал уже :)
Maxim
вообще было бы круто биндить на месте, а не только последний аргумент
типа чтобы можно было вместо
do
a <- getA
b <- getB
smth a b
писать smth (?? getA) (?? getB), где ?? — какой-нибудь особенный синтаксис
Ilya
Maxim
так вот зачем нужны аппликативы
Alexander
У меня тоже в свое время такое "ага!" случилось. И тоже после монад
Ilya
хотите факториал на хаскеле?
Ilya
fact 0 = 1
fact (n + 1) = (n + 1) * fact n
и даже работает
Main> fact 10
3628800
cloudedbe
Вот это да
Aragaer
а product 1 .. 10 не?
Ruslan
Ruslan
где-то в хаскеле захардкожено, что (-) это "антоним" (+)? 😭
Aragaer
а чем плюс слева лучше минуса справа?
Ю ли я? 🤔
Ilya
zool
NPlusKPatterns ?
Ю ли я? 🤔
Угу
Ruslan
Alexander
NPlusKPatterns ещё не выпилили?
Ruslan
оно исключительно с плюсом работало, насколько я понял?
Alexander
вроде какой-то набор операций ограниченный
Alexander
есть ViewPatterns если нужно разное и хитрое
Alexander
но то, что можно написать с N+K так же красиво не получится
Alexander
с другой стороны расширение сделанное ради красивой статьи это не самая полезная штука
Alexander
печалька какая
Ruslan
A64m
у этого расширения есть лютые хейтеры
Ruslan
пнял )
Alexander
ViewPatterns FTW
A64m
имитация n+k на них выглядит страшно
Alexander
да
A64m
ghcjs сделали сразу и 8.2 и 8.4
IC
Ю ли я? 🤔
Если расширение - это добавление чего-то в язык, то NoNPlusKPatterns - это сужение? *филосораптор.жпг*
Alexander
как правильно PosixTime превратить в CTime?
Alexander
которое NominalDiffTime