Hog
а это не экономия на спичках?
Romɑn
В коде? нет)
Hog
Content-encoding: gzip
Romɑn
мне как минимум леньдля каждого инта писать maybe { let! goals = getGoals () }
Romɑn
Не, я не ресурсы экономлю, я экономлю боль, которую я буду испытвать обходя огромные жсоны с кучей опшнов
Hog
o |> Option.map id |> Optiond.defaultValue 0
Romɑn
МИРИАДЫ ИХ!
Hog
окей-окей!
Vasily
Можно написать оператор (<?>)
Hog
Можно написать оператор (<?>)
конечно - и в него вот эту хуергу с опшоном засунуть
Vasily
Ну и список опшном не имеет смысла делать
Hog
типа пустой и всё?
Vasily
Там обычно "пустой/непустой"
Vasily
Список опшнов тоже не очень имеет право на существование
Vasily
Ну т.е. я знаю кейсы, когда он появляется
Vasily
И где пригоден
Romɑn
Ну и список опшном не имеет смысла делать
Если бы это я делал, то я бы с радостью не слал сам себе пустой список
Hog
Список опшнов тоже не очень имеет право на существование
имеет - если индекс имеет "физический" смысл
Romɑn
https://gist.github.com/Neftedollar/f0c37a552565eb7951cffab30da20e7d Ругайте
Vasily
имеет - если индекс имеет "физический" смысл
Ну надо другую структуру данных тогда
Vasily
На 72 строчке какая-то хуерга
Vasily
В данном случае кортеж вырождается в список
Vasily
Т.к. все значения одного типа по идее
Romɑn
На 72 строчке какая-то хуерга
мб, тупли не тестил тк не знаю как их писать в json) Но! Я знаю зачем они там нужны
Romɑn
там - в Decoder
Romɑn
для полноты матча? :)
для комбинирования же
Vasily
Ну я еще раз говорю, что там написана хуйня
Romɑn
окай
Vasily
К сожалению
Vasily
Это бы имело смысл
Romɑn
поправлю, спасибо
Vasily
Если бы были разные типы в кортеже
Vasily
А поскольку типы одинаковые
Vasily
То не торт
Vasily
в массиве
Здесь по факту попытка десериализовать массив в тапл
Vasily
Урусай, я все видел
Hog
я тоже
Vasily
Поэтому, имхо, тут затык в том, какая структура данных используется в рекорде
Romɑn
Здесь по факту попытка десериализовать массив в тапл
нет, там попытка сказать что если у тебя там тапл то используй декодер этот
Vasily
Если там кортеж - это очень странно
Hog
Если там кортеж - это очень странно
там обратная зависимость
Vasily
Равно как и Array
Romɑn
Если там кортеж - это очень странно
Но то что там написана фигня, я убедился только что потому что в типах не схождится лол
Romɑn
Вообще есть Shape.FSharpList etc
да и он там есть) Смысл в том, чт оя по типу фарша генерирую Decoder<T> и обхожу F# тип
Romɑn
поэтому тут нельзя использовать лист или эррай вместо тапла
Hog
obj array
Vasily
Нафиг там тапл?
Romɑn
Я хз
Romɑn
Можно удалить на самом деле
Vasily
Мне кажется, тебя бы спас unfold условный
Romɑn
Нафиг там тапл?
Ты достучался до моего сердца и я удалил таплы. Потому что они нужны уже для взаимодействия с самими объектами Decoder<'T> типа Decode.tuple2 mkDecoder<int> () mkDecoder<string>()
Romɑn
val it: Decoder<'T * 'A>
Vasily
Ох ты ж
Vasily
Ты мой гист внимательно смотрел?
Roman
@omgszer я че-то туплю. Как мне с нуля заимплементить через Async<'a> вызов, например, в базу?
Roman
синхронная имплементация)
Vasily
async{
Vasily
return
Vasily
}
Vasily
ВСЕ
Ayrat
синхронная имплементация)
она надеюсь в систем колах асинхронная?
Ayrat
то есть там есть какой-то асинхронный апи? BeginRead, EndRead?
Ayrat
вот это вот все?
Ayrat
если она полностью синхронная до самого низа, то оберни в асинк и забей, просто будет засран тред в пуле
Roman
ну через бегинрид там есть конструктор асинка
Ayrat
там есть конструктор FromBeginEnd
Roman
просто большинство либ для этого используют таски
Ayrat
просто большинство либ для этого используют таски
если ты посмотришь, то таски реализованы так же. вызывают какие-то бегинриды
Roman
я вот подумал, как можно это в асинк перегнать помимо очевидных AwaitTask
Ayrat
внутрях корСлра