Крылатый
А берёзку? (не шутка)
Shub
и березку можно, но она менее красивая. ну или я не видел красиво подстриженных
Shub
берез тут кстати просто дофига, говорят, что в наших краях их плотность выше, чем в россии
Shub
https://www.google.com/search?tbm=isch&q=japanese%20maple&tbs=imgo:1
Anonymous
Shub
NJ
Крылатый
Hog
Крылатый
Hog
Крылатый
Shub
тут когда-то был один сплошной лес, настолько большой, что миграция с Лонг Айленда до современной Пенсильвании заняла около 200 лет
Hog
Shub
а у нас не растут :(
у вас драп легально. конопля - это дерево ведь, вы просто не даете ему вырасти.
Anonymous
Крылатый
Shub
трава. у них трава легальна. ты думаешь, он туда за эфшарпом уехал?
Крылатый
А, понятно)
Romɑn
Anonymous
Shub
ну его fable в общем-то с головой выдало
Hog
всё шутите? :)
Hog
лигалайз произошёл гораздо позже.
Hog
это независимые события
Shub
ну да, кто ж твой приезд теперь проверит-то?
Shub
или момент, когда ты решил свичнуться на f#
Romɑn
Anonymous
я вот не знаю, мне гораздо чаще сложнее понять код на питон с хуевой тучей одноразовых перменных во всех концах, огромным количеством if elif else и прочей ерундой, чем самый point-free на Хаскеле (в 2 стрчоки кода вся программа %)). это при том-то, что начинал я как все - с тех же книг, с того же ООП, все то же самое. у кого-нить есть такая проблема?
Anonymous
прикола ради иногда прохожусь по репам на гите популярным в разных языках -- и полный пиздец
Shub
признайся же, пыхнул поди, включил опус №90 из третьей симфонии Брамса, и решил, что было бы чертовски смешно перейти на F#. не так ли?
Hog
Диёр
Shub
Hog
я случайно наткнулся на маленький кусочек в F# в проекте и решил посмотреть, что это за зверёк
Shub
я могу дать примеры кода на F#, неотличимые от цитат из Некрономикона
Romɑn
Hog
не помню, что тогда в наушниках было... Forgive-Me-Not скорее всего
Hog
Suicide Сервис
Shub
если ты попытаешься прочесть те сигнатуры вслух, то тебя пожрут демоны среди бела дня, как того безумного араба Аль-Хазреда
Диёр
я как-то услышал про функциональное программирование и скачал маленькую книжку с примерами фп в питоне
Hog
Shub
многоразовая переменная, лол
Hog
Anonymous
каким образом $language_name спасает тебя от кода с тучей одноразовых переменных и огромного количества if-else?
на самом деле, спасает. во-первых, на уровне типов часто легче описать предметную обсласть и более вероятно, что с первого раза получится написать почище. во-вторых, даже если некая доля вариативности остается, она уходит в паттерн-матчинг, который и читается, и ощущается, и пишется и на вкус, и на цвет, и вообще гораздо понятнее и приятнее. какая-то закономерность мною замечена, что во втором случае попытка выразить то же самое содержание ВСЕГДА смотрится элегантнее, по крайней мере, если человек отдает себе отчет что и зачем он делает.
Shub
ага, так, ну пристегнитесь тогда
Romɑn
Hog
к тому же - у тебя уже рабнеделя закончилась, а у меня ещё нет!
Hog
так НЕ ЧЕСТНО!
Romɑn
please forgive me this words
Shub
на самом деле, спасает. во-первых, на уровне типов часто легче описать предметную обсласть и более вероятно, что с первого раза получится написать почище. во-вторых, даже если некая доля вариативности остается, она уходит в паттерн-матчинг, который и читается, и ощущается, и пишется и на вкус, и на цвет, и вообще гораздо понятнее и приятнее. какая-то закономерность мною замечена, что во втором случае попытка выразить то же самое содержание ВСЕГДА смотрится элегантнее, по крайней мере, если человек отдает себе отчет что и зачем он делает.
ответь мне плз, что тут описано
type AgUpdator<'Id,'St,'Ev> = AgBuilder<'Id,'St,'Ev>*AgLoader<'Id,'St>*(Ag<'Id,'St> -> 'Ev -> Async<Validate<'Ev>>)
type MultiEventAgUpdator<'Id,'St,'Ev> = AgBuilder<'Id,'St,'Ev> * AgLoader<'Id,'St> * (Ag<'Id,'St> -> 'Ev list -> Async<Validate<'Ev list * int>>)
Hog
😂😭
Anonymous
а можно скриншотом на норм монитое?
Shub
если этого недостаточно, то держись за табуретку, блин
Shub
`
Shub
let handleEvents
(agBuilder:AgBuilder<'Id,'St,'Ev>)
(get:AgLoader<'Id,'St>)
(put: Ag<'Id,'St> -> 'Ev list -> Async<Choice<'Ev list * int, 'Err list>>)
(f:AsyncArrow<'Input * Ag<'Id,'St>, Choice<'Ev list, 'Err list>>) : AsyncArrow<'Input*'Id, Choice<'Ev list*'St*int, 'Err list>> =
fun (inp,iden)
Anonymous
Shub
кто чувствует себя рисково, может попробовать прочесть это вслух
Dmitry
ответь мне плз, что тут описано
type AgUpdator<'Id,'St,'Ev> = AgBuilder<'Id,'St,'Ev>*AgLoader<'Id,'St>*(Ag<'Id,'St> -> 'Ev -> Async<Validate<'Ev>>)
type MultiEventAgUpdator<'Id,'St,'Ev> = AgBuilder<'Id,'St,'Ev> * AgLoader<'Id,'St> * (Ag<'Id,'St> -> 'Ev list -> Async<Validate<'Ev list * int>>)
ну от скуки можно и xyq сломать, чо уж, я подобное и на питоне писал как познал list comprehensions
Shub
Shub
но щас попробуй
Anonymous
кто чувствует себя рисково, может попробовать прочесть это вслух
честна-честна, я не вижу там ничего адски сложного, просто много generic параметров и туплы всякие. ну и чо? ты давно не нажимал кнопку F12, чтобы увидеть базовый клас, и снова F12, и снова? прочитать дерево наследников - это более страшная магия, чем это.
Anonymous
Тут даже понятно в чем смысл этого куска
Anonymous
йобара
Shub
Shub
черт, не вставляется картинкой
Anonymous
я скачал
Anonymous
в сутдии (это ж студия?) смотрится еще лучше )
Shub
да проклятая виртуалка выделяет текст
Shub
ну что, сынку, помогла тебе твоя подсветка?
Anonymous
Я тебе породил, я тебя и убью.
Shub
fun identifier ->
let stream = estore.streamBuilder identifier
let zero = ag.zeroBuilder identifier
readFrom startFrom conn stream batchSize
|> Async.map (Arrow.split (Array.choose decoder >> Array.fold ag.apply zero))
|> Async.map (Tuple.mapFst (Array.map (fun evt->evt.Event.EventNumber) >> Array.maxOrDefault (startFrom-1)) >> ((<||) (Ag.makeVersioned identifier)))
Anonymous
Я не знаю, это не выглядит страшно. Point-free на Хаскеле - более ядовитый зверь.
Shub
у меня нет фобий перед буквами на экране