@Fsharp_chat

Страница 613 из 772
Friedrich
24.06.2018
06:45:40
Потому что просто так Option.ofObj x компилятор мне не даёт вызывать

Но это дело сработало очень хреново.

Vasily
24.06.2018
06:46:04
А match там не катит?

Friedrich
24.06.2018
06:46:57
Google
Friedrich
24.06.2018
06:47:05
Придётся бахать AllowNullLiteral.

(сразу я что-то о нём забыл, и нагородил костылей)

[FS0934] Records, union, abbreviations and struct types cannot have the 'AllowNullLiteral' attribute

Да что ты будешь делать ._.

Vasily
24.06.2018
06:48:34
Код покажи

Слышь

Friedrich
24.06.2018
06:48:41
[<CLIMutable>] [<AllowNullLiteral>] type DailyQuote = { id : int64 date : DateTime quotationId : int64 }

Vasily
24.06.2018
06:48:55
И кто там null?

Friedrich
24.06.2018
06:49:14
И потом я это вытаскиваю из базы через let dq : DailyQuote = collection.FindOne(…)

Vasily
24.06.2018
06:49:26
Не

Friedrich
24.06.2018
06:49:27
И оно бывает равно null.

Vasily
24.06.2018
06:49:33
Так не надо

Friedrich
24.06.2018
06:49:39
А как надо?

Google
Friedrich
24.06.2018
06:49:57
О, а там же есть адаптер от LiteDB.FSharp!

Vasily
24.06.2018
06:50:03
Я делаю всегда поиск, чтобы возвращал коллекцию

Friedrich
24.06.2018
06:50:16
Блин, это как-то неправильно.

Vasily
24.06.2018
06:50:23
Ну почему

Friedrich
24.06.2018
06:50:26
Но, конечно, лучше, чем мой (неработающий) подход.

Vasily
24.06.2018
06:50:54
Возвращается все равно один элемент

Завёрнутый в сек

А дальше seq.isempty

Seq.head

Просто с некоторых точек зрения findone излишен

И является частным случаем find

С другой стороны,findone в теории работает намного быстрее

Vasily
24.06.2018
06:55:38
Кстати, тоже вариант

Friedrich
24.06.2018
06:56:30
Ну, щас попробуем.

Да, так заработало. Интересно, почему же не работал Option.cast…

Evgeniy
24.06.2018
07:05:19
Да, так заработало. Интересно, почему же не работал Option.cast…
Ну, а что тут непонятного. let inline cast (o: obj) = try Some (unbox o) with _ -> None

Friedrich
24.06.2018
07:05:49
Всё ещё непонятно, почему не работало!

А, или он только для структур будет работать?

Чо вообще делает unbox %)

Google
Evgeniy
24.06.2018
07:06:31
Всё ещё непонятно, почему не работало!
Ты ему отдавал результат ofObj.

Это функция не кастит значение в option.

Friedrich
24.06.2018
07:07:11
А, понял, мне надо было box >> Option.cast

Evgeniy
24.06.2018
07:07:21
Это просто безопасный каст.

Friedrich
24.06.2018
07:08:00
Я думал, что это аналог Option.map(fun x -> x :?> 'T)

Evgeniy
24.06.2018
07:08:16
А, понял, мне надо было box >> Option.cast
Я думаю, он тебе просто не нужен. :)

Friedrich
24.06.2018
07:08:22
Ну типа как Seq.cast, например. Применяется к Seq, а не к любому obj

Я думаю, он тебе просто не нужен. :)
А я уже весь этот FSharpx у себя выпилил. Оказалось, что у меня штук шесть пакетов притащены и не используются.

Roman
24.06.2018
07:58:21
Сделай два мейлбокса
А есть канал с мейлбоксами Василия?)

Friedrich
24.06.2018
08:16:31
Сделай два мейлбокса
Мне кажется, штука с ReaderWriterLockSlim вышла намного проще в понимании, чем схемы на нескольких мейлбоксах, смотри: https://github.com/ForNeVeR/EvilPlanner/blob/d829b028429b40fd3920f1f928aa90c3fc1797b5/EvilPlanner.Core/Storage.fs#L9-L29

Ayrat
24.06.2018
09:19:31
Кстати эта проблема (много читателей, один писатель) решается в том числе архитектурно через "разделение ответственности между командами и запросами" (в девичестве CQRS)

добавит когнитивной сложности, но зато понтово

твой вариант @fvnever гораздо лучше, т.к. 1) проще 2) работает

Bonart
24.06.2018
09:27:59
добавит когнитивной сложности, но зато понтово
На самом деле CQRS начинается (и заканчивается) на разделении читающих и пишущих транзакций :) Так что у @fvnever самый что ни на есть CQRS

Ayrat
24.06.2018
09:28:27
Ну нет.

Vadim
24.06.2018
09:28:33
@gsomix хочу f# c ml.net попробовать связать.
Вот ещё ссылка на эту тему. http://www.codesuji.com/2018/06/09/F-and-MLNet-Regression/

Ayrat
24.06.2018
09:28:47
От того что ты в одну бд кинешь читателей и писателей, толку мало

10 ридер реплик, одна мастер для команд

Евгений
24.06.2018
09:29:07
@vad_pashkov ?

спасибо

Google
Ayrat
24.06.2018
09:29:21
:D

Bonart
24.06.2018
09:29:46
10 ридер реплик, одна мастер для команд
Понтово, но для данного конкретного случая избыточно :)

Friedrich
24.06.2018
09:41:41
Давайте посмотрим!

Vasily
24.06.2018
09:41:53
@fvnever перепиши на модуль :)

Типом смотрится беспонтово

Friedrich
24.06.2018
09:42:15
@fvnever перепиши на модуль :)
Зойчем и как именно?

Параметризованных модулей же не бывает :(

Friedrich
24.06.2018
09:42:54
*в F#
В яваскрипте тоже!

Vasily
24.06.2018
09:43:21
А зачем тебе параметризованный, если ты всегда можешь экземпляр бд прокидывать?

Friedrich
24.06.2018
09:43:34
А то там снаружи возьмут да и поюзают его без транзакций.

Vasily
24.06.2018
09:44:26
Да его и так поюзают

Если надо

Friedrich
24.06.2018
09:45:41
Если надо
Если надо — то поюзают, а вот если не надо — то мой дизайн их не подталкивает к тому, чтоб они сами владели этой датабазой. А то, что ты предлагаешь — подталкивает.

Evgeniy
24.06.2018
09:46:00
Я все-таки за то, чтобы модули были стейтлесс. Пусть локи и подключения будут в классах, это хорошее решение.

Friedrich
24.06.2018
09:46:19
Я согласен, что данный вариант пока что довольно текучий, но считаю, что его нужно именно в этом ключе развивать.

Шоб наружу датабаза не торчала!

А у readerwriterlockslim внутри cas?
Блин, там чото сложное. https://github.com/dotnet/corefx/blob/5e3aecf952ea5810b82293312fd840d4fdaa13d3/src/Common/src/CoreLib/System/Threading/ReaderWriterLockSlim.cs

Google
Friedrich
24.06.2018
09:49:03
Куча каких-то таймеров и ивентов, спинлоки везде.

Bonart
24.06.2018
16:40:54
Шоб наружу датабаза не торчала!
Именно так. А то еще гдобальную переменную впендюрят

Evgeniy
24.06.2018
17:10:05
Привет.

евроневидимка
24.06.2018
17:17:30
ку

Aminion
24.06.2018
20:33:04
Ребята, читнул новость о Suave. Какой сейчас мейнстрим фреймворк для веба? Giraffe поверх аспнета?

Aminion
24.06.2018
20:35:03
https://safe-stack.github.io/docs/news/#18th-june

Igor
24.06.2018
20:35:59
Ну и что, он же все равно работает и поддерживается

Aminion
24.06.2018
20:37:43
Можно. Но тогда будет все начинатся с ооп контроллеров

Friedrich
25.06.2018
02:15:27
Дак можно хоть чистый асп нет мвц
Предпочитаю чистый Kestrel, а в него уже встраивать свои штуки.

Vladimir
25.06.2018
08:18:13
Ребята, читнул новость о Suave. Какой сейчас мейнстрим фреймворк для веба? Giraffe поверх аспнета?
Да, единственное удручает что мейнтейнер взял себе долгий отпуск, с мая не было коммитов

Vladimir
25.06.2018
09:18:15
Неа..

Evgeniy
25.06.2018
10:05:15
https://twitter.com/alfonsogcnunez/status/1011186545213222912

Igor
25.06.2018
10:11:09
https://twitter.com/alfonsogcnunez/status/1011186545213222912
Прикольно, а это часть F# или только Fable?

Evgeniy
25.06.2018
10:11:17
Просто учитывают новые аннотации при генерации кода.

Страница 613 из 772