Alexander
(любители велосипедов)
Leonid 🦇
ненавижу хаскель
Крылатый
D:
Andrew
:c
Aleksei (astynax)
:Р
Leonid 🦇
за то что всё приходится велосипедить
Aleksei (astynax)
офигенно велосипедить!
Leonid 🦇
вот почему в этом вашем серванте файлы сервятся через жопу^C Raw?
Aleksei (astynax)
А ты попробуй через client их послать (подсказка: вообще не получится)
Aleksei (astynax)
Потому что авторам серванта не нужно слать файлы?
Leonid 🦇
ну там хоть серверная хрень есть с мультипартом
Leonid 🦇
и то только multipart/form-data а не multipart/mixed
Leonid 🦇
самый треш это конечно что в серванте постоянно детали имплементации просачиваются в АПИ
Aleksei (astynax)
"Красивые типы", говорили они. "Один раз написал абстрактно тип для API и пользуешь везде", говорили они
Leonid 🦇
ложь и обман
Alexander
Alexander
у нас стримятся без Raw
Leonid 🦇
там какие-то мутные стратегии
Alexander
да, в апстриме чушь какая-то
Alexander
посмотри PR может есть другой вариант
Leonid 🦇
Ну у вас то свой конечно, но вы не поделитесь опять таки
Alexander
там Джулиан должен был сделать, но это не точно
Leonid 🦇
ну вот опять велосипед
Alexander
ну он должен был наш велосипед в апстрим загнать
Alexander
но он свалил, т.к. ему нужно общение в офисе и все такое
Alexander
а не ремоут ворк
Alexander
чем кончилось все я в итоге не знаю
Leonid 🦇
Тоже мне норми нашелся. В хаскеле аутизм или смерть!
Leonid 🦇
Там один PR про стирмы и это базермановский который приняли
Alexander
Alexander
это ваши телеграмщики за собой так и не убрались
Leonid 🦇
такие самали плохо летают. такие делают только криворучки
Alexander
печалька, у базермана накромания какая-то
Alexander
а в servant-streaming ничего нету?
Leonid 🦇
на хакадже такой нет
Leonid 🦇
https://github.com/plow-technologies/servant-streaming этот?
Leonid 🦇
выглядит намного вменяемее
Alexander
вроде оно, но Джулиан видимо не туда добавлял.. хз
Alexander
будет время посмотрю, мне очень лень самому в апстрим пушить то что противоречит базерману
Alexey
@astynax о! знакомые лица! здрасьте
Aleksei (astynax)
Хелло. Нас, хаскелистов мало. Постепенно все знакомыми становимся, в т.ч. и лицами :)
A64m
чего для стриминга не сделают всякие утилиты вроде стрима файлов в директории? мне приходится для этих целей туртлом пользоваться и от гонзалезщины в этом туртле меня АЖ ТРИСЕТ
Alexey
мы общались на fpconf'е
A64m
с другой стороны, не факт, что это со стримингом работать нормально будет
Denis
радуйтесь что turtle без dhall еще
Alexander
A64m
адовая вербозность, ничего ни с чем не стыкуется без явной конвертации
Vladislav
Как будто это что-то плохое
A64m
плохое. в теории это звучит неплохо, когда для всего свои типы, но на практике ужас. особенно для однострочника в консоли
Vladislav
🤷♀️ мне норм
A64m
а мне нет
Vladislav
Я и вокруг 30 типов для текста не понимаю проблему людей.
Leonid 🦇
как это 30?
Leonid 🦇
я знаю 5
A64m
их больше, если инстансы для IsString счиать
Leonid 🦇
Text, Text.Lazy, text-utf8, utf8-string ну и String
Leonid 🦇
Ну уж на IsString чего только нет
Vladislav
String, ByteString (lazy, strict), Text (lazy, strict), билдеры для вышеупомянутых, ShortByteString, Vector Word8, Vector Char, Seq Char, etc
Хотя использовать ByteString для текста это так себе идея, там String в названии по ошибке
Vladislav
Способов представить текст можно придумать бесконечно много, я однажды сделал NonEmpty (NonEmpty Letter), где Letter это ньютайп над Char с инвариантом isAlpha c == True
Vladislav
now sue me
Leonid 🦇
Когда люди называют ByteString текстом миня аж трисёт
Leonid 🦇
кому и char* текст
Vladislav
ByteString и для byte strings так себе
Vladislav
Он только для FFI годится
Leonid 🦇
так он для FFI и делался
Vladislav
Ну да, просто люди его misuse
A64m
нет, это строки были потому так и называется
IC
Vladislav
Vector Word8
Евгений
А ByteString это не array word8?
A64m
то от чего байтстринг произошел-то точно было текстом, программ на хаскеле
A64m
Vector Word8
да, был такой проект, но , к сожалению не взлетел
Kirill
A64m
куда там это дхалл всунуть-то?
Евгений
data ByteString = PS {-# UNPACK #-} !(ForeignPtr Word8) -- payload
{-# UNPACK #-} !Int -- offset
{-# UNPACK #-} !Int -- length
deriving (Typeable)
Звучит как char* прост
Слава
Таргетироваться исключительно на Haskell (C++ / Java / JavaScript / etc) и сидеть на одном языке всю жизнь - этот подход в современных условиях не работает. Да и раньше работал только в виду неразвитости индустрии. Если хочется стать хорошим программистом, а не просто умеющим писать коды на конкретном языке, придется учить много разных языков и подходов. Не за один раз, конечно, но за несколько лет. И еще лучше будет, если это не просто языки, а языки, меняющие ваше сознание, каждый по-своему. Таким образом, лет через 5 активной разработки, желательно выучить на достаточном уровне:
- Низкоуровневый статически типизированный язык (C++, C, Rust)
- Управляемый язык (C#, Java)
- Динамически типизированный язык (Python, Ruby, JavaScript, Clojure)
- Функциональный язык (Haskell, Clojure, Scala*, JavaScript*, Erlang*)
* Не вполне ФЯ
Меня, честно, очень сильно удивляют люди, которые противятся этой простой идее. Буквально несколько дней назад я наткнулся на подобных Java-разработчиков, да и на прошлой работе таких видал, тоже Java. Эти товарищи все еще упорствуют, высказывают какие-то невзрослые суждения вроде "не вижу причин изучать что-то еще", и т.п.
Если кому интересно, беседа состоялась здесь:
https://vk.com/feed?w=wall-54530371_191356_r191532
Зато этот подход почему-то работает во всех других отраслях. Стало быть, с IT что-то не так.
Kirill