@haskellru

Страница 427 из 1551
kana
20.09.2017
19:52:06
Или в случае с ленью это не такая уж и большая проблема?

Да это же не теоркат

Он тайплевел-программирование у него просто

Dmitry
20.09.2017
19:53:30
Ну так интересна область применнния

Google
Vasiliy
20.09.2017
19:53:48
конкретная задача - у меня есть язычок для чего-то типа диаграмм последовательностей, до сих пор все участники взаимодействия были одного типа, захотелось добавить ещё одного

kana
20.09.2017
19:53:59
Применения два: - дсл на уровне типов (хз как жить без серванта) - "зависимые" типы для формализация и более точных типов

Dmitry
20.09.2017
19:54:04
О прикольно

Vasiliy
20.09.2017
19:54:13
диаграмма последовательности - это что-то такое https://www.smartdraw.com/sequence-diagram/img/sequence-diagram.jpg?bn=1510011091

ну, у меня по-другому выглядит, но суть такова - показать, как объекты обмениваются сообщениями, переходы между состояниями итд

Dmitry
20.09.2017
19:54:50
Ништяк!

Вот ей-богу достойная для х-я задача, а не все эти котики в монгодб...

Vasiliy
20.09.2017
19:56:29
лол

я так-то на плюсах пишу, это так, вспомогательный инструмент

в продакшоне х-ь у меня так, по хттп на мелкие запросы отвечает

а, ещё система сборки на нём...

kana
20.09.2017
20:00:09
Вот это меня интересует, кто может сказать что? Там из реквеста достается ByteString квери, парсится в [(Text, Maybe Text)], lookup

В сервант-сервере каждый комбинатор QueryParam/QueryFlag/QueryParams заново парсит и строит мапу квери-паромов

Google
kana
20.09.2017
20:00:19
Что-то тут не так

Или в случае с ленью это не такая уж и большая проблема?

Dmitry
20.09.2017
20:00:22
Похоже просто для души там хаскель :-)

Vasiliy
20.09.2017
20:01:17
может, там мемоизация какая срабатывает?

kana
20.09.2017
20:02:15
Вот меня и интересует, хаскель как-то помогает это и соптимизировать?

Vasiliy
20.09.2017
20:02:22
Похоже просто для души там хаскель :-)
не обязательно, сборку мы на shake написали, честно говоря, ничего более годного под наши нужды не нашли

Dmitry
20.09.2017
20:02:42
А шейк что это?

Vasiliy
20.09.2017
20:02:43
если что https://hackage.haskell.org/package/shake

рекомендую всем и каждому

хомпага http://shakebuild.com/

Dmitry
20.09.2017
20:03:13
Аа

Клёвая!

Vasiliy
20.09.2017
20:07:30
Вот меня и интересует, хаскель как-то помогает это и соптимизировать?
кроме как заглянуть в генерируемый код и посмотреть я и не знаю, что предложить

но мне кажется, что ничего там не оптимизируется

и я натыкался на тред, по-моему, на реддите, что апи лучше писать не в плоском виде, а деревом

kana
20.09.2017
20:09:36
Дерево потом очень сложно в клиенты превратить

Да и склеить хэндлеры сложновато

Vasiliy
20.09.2017
20:10:01
т.е. type Api = "world" :> ("hello" :<|> "goodbye") вместо type Api = "world" :> "hello" :<|> "world" :> "goodbye"

согласен

да и пути до конкретных эндпоинтов нужны, для сваггера, например

Google
Vasiliy
20.09.2017
20:10:37
и для safe links

с деревом сервер писать ещё более менее, а у клиента геморрой получается

Leonid
20.09.2017
20:11:50
сервант парсит query/header только после того как статические пути все обойдёт.

kana
20.09.2017
20:12:42
А, кстати, да, смысла в дереве нет, он все равно за запрос только один раз квери обработает для каждого комбинатора

В одном эндпоинте

Leonid
20.09.2017
20:13:34
т.е. "foo" :> QueryParam "blah" Int :> "xxx" - сначала сматчит "foo" / "xxx" и только потом будет смотреть что там в "blah"

Vasiliy
20.09.2017
20:13:58
да, точно, у него же есть вот такая штука https://hackage.haskell.org/package/servant-server-0.11/docs/Servant-Server-Internal-RoutingApplication.html#t:Delayed

Leonid
20.09.2017
20:14:03
вообще там где-то был принтер для дерева этого

Vasiliy
20.09.2017
20:14:37
и в этот Delayed комбинаторы накидывают парсеры параметров и прочее

kana
20.09.2017
20:15:15
Да, я уже с ним работал



Но я только теперь понял, для чего он)

Leonid
20.09.2017
20:20:04
https://hackage.haskell.org/package/servant-server-0.11/docs/Servant-Server-Internal-Router.html#v:routerLayout вот ещё полезно

Yuriy
20.09.2017
20:40:06
@qnikst, я не смог те примеры довести до состояния, чтобы вылетела описываемая ошибка

Alexander
20.09.2017
21:22:32
@cblp_su я чота с другими вещами завис

может завтра попробую минимальный кейс собрать

Denis
20.09.2017
23:55:37
https://twitter.com/lexi_lambda/status/910576100484382721

Pig
21.09.2017
07:28:24
Надо посоветовать ему что-то подобное :D

illiatshurotshka❄️
21.09.2017
07:31:03
у меня вскод меняет цвет скобочек в зависимости от уровня вложенности

adam
21.09.2017
07:43:20
бесполезная фича

Google
illiatshurotshka❄️
21.09.2017
07:51:05
эстетичная как минимум

Hot
21.09.2017
07:52:57
https://twitter.com/lexi_lambda/status/910576100484382721
Воу-воу-воу. Это что, смесь Lisp и Haskell?

Aleksey
21.09.2017
08:00:54
Воу-воу-воу. Это что, смесь Lisp и Haskell?
Это хаскельподобный (не синтаксически) язык для Racket

Yuriy
21.09.2017
08:01:17
то есть да, смесь Lisp и Haskell

Leonid
21.09.2017
08:14:36
Есть под Wai более вменяемый мультипарт, нежели http://hackage.haskell.org/package/wai-extra-3.0.20.0/docs/src/Network-Wai-Parse.html?

Aleksey
21.09.2017
08:19:18
WAI низкоуровневый, он просто вычленяет multipart и обрабатывать его уже надо самому погромисту

Alexander
21.09.2017
08:23:41
@lonokhov у меня через это сделано

Leonid
21.09.2017
08:24:52
Мне нужены хедеры на частях с файлами, но тут их нет. (А в Снапе есть!)

Aleksey
21.09.2017
08:26:26
parseRequestBody+lbsBackEnd дают сразу файлики в виде байтстрингов

Alexander
21.09.2017
08:26:59
можно и в виде файликов сразу

Aleksey
21.09.2017
08:28:00
можно и в виде файликов - на то и бакенды

Leonid
21.09.2017
08:31:03
У меня на частях с файлами есть ещё заголовки относящиеся к файлам.

Я не вижу там в FileInfo ничего кроме filename и content-type

Aleksey
21.09.2017
08:36:18
Ну так у файла и нет ничего больше

Leonid
21.09.2017
08:38:41
Да ладно?

4.4 Other attributes Forms may request file inputs from the user; the form software may include the file name and other file attributes, as specified in [RFC 2184].

вот other file attributes мне и нужен

Vasiliy
21.09.2017
08:41:20
а список параметров, которые возвращает parseRequestBodyEx - это не то?

Leonid
21.09.2017
08:46:13
нет, это другие части формы

Alexander
21.09.2017
08:46:31
Снойман сказал нету, значит нету

Google
Alexander
21.09.2017
08:46:38
чего споришь и RFC показываешоь

!!!!1адын

Anatolii
21.09.2017
08:47:23
Какой такой RFC?

Leonid
21.09.2017
08:48:11
хм. попробую тогда через аттрибут у content-disposition передать. снап его коряво парсил, может снойман осилил

Alexander
21.09.2017
08:49:31
кстати, в варпах, лучше пользоваться TVar своим или vault хранилищем, в которое ссылка от request есть?

Leonid
21.09.2017
08:51:59
а vault разве не per-request?

короче, no such luck :(

Alexander
21.09.2017
08:58:38
а может, ну тогда TVar

Leonid
21.09.2017
09:07:31
https://github.com/yesodweb/wai/blob/master/wai-extra/Network/Wai/Parse.hs#L429 C-f error

ужаснах

https://github.com/haskell-servant/servant-snap теперь это не кажется таким уж странным

Aleksey
21.09.2017
09:26:09
Снап - переусложненное днище, извините

Dmitry
21.09.2017
09:26:44
это про heist наверное

снап-то сам по себе простой вроде

Leonid
21.09.2017
09:30:21
Снап простой, но я предпочитаю Request -> IO Response

В снапе роутинг и хэндлинг в одной монаде

Без MonadControl никак

Страница 427 из 1551