Shub
ну это такое. в Коннектикуте например запрещенное можно купить без лицензии
Shub
оно у них получается “разрешенное"
Hog
да - вот как раз в тот день, когда я с ним поехал - пришлось 3 часа добираться с пересадкой в гарлеме
Hog
тот ещё экспириенс :)
Фил Ранжин
Я что-то запутался.
Смотрите, вот есть типы типизаций
Есть номинативная и структурная
есть строгая и нестрогая
и есть такая, которой термин которой я не знаю - существующая или не существующая в рантайме.
строгая/нестрогая - это показатель того, делает ли ЯП имплиситные касты
Всё выглядит так, как будто де-факто считается, что номинативная - обязательно есть в рантайме, но я могу теоретически представить себе ЯП с номинативной типизацией, который не тащит метаданные типов в рантайм.
Я что-то упускаю?
Фил Ранжин
У тайпскрипта структурная типизация. В то же время, силами ЯП, я вполне могу её ограничивать. Скажем, я могу требовать, что бы метод принимал тип, содержащий только те поля, которые мне нужно. Так же я могу положить метаданные типа вручную, тогда они будут существовать и в рантайме тоже. А ещё, я могу положить их так, что бы они у меня работали и компайл тайм. А вот например F# тащит метаданные всех типов в рантайм по дефолту, и если я хочу игнорировать их, мне придётся руками колдовать с дженериками, эмитируя структурную типизацию.
Вопрос, ответ на который я ищу - как наиболее полно описать модель типизации в конретном ЯПе?
サイトー
Vladislav
Vladislav
Анна
И в Минске тоже!
Vladislav
Vladislav
Там в самом начале про статическую , динамическую и друзей написано
Анна
Какой машины?
Vladislav
Трактора
Анна
Vasiliy
Hog
Сегодня лучше смотреть «День сурка» :)
Vladislav
Кто участвует ?) https://twitter.com/fsharporg/status/1091449339430481925?s=21
Hog
https://twitter.com/richcampbell/status/1091603030741372928?s=12
Vasily
Походу, нужен бот переводчик
Vasily
И назвать его надо fabel fish
Klei
@grishace Ты не знаешь, как в FsReveal вывести код в два этапа отдельными блоками через fragment?
<p class="fragment">bla bla<p> - работает.
<p class="fragment">
*)
(*** include: code id ***)
(**
</p>
- нет.
Hog
@Kleidemos сейчас проснусь - погляну. Фрагментами точно пользовался... у тебя md или fsx?
Hog
А - у тебя fsx. Я им ни разу не пользовался - всё в мд ваял
Klei
Klei
Странно, если в результат залезть, то выглядит как валидный код.
Hog
На fsx - тоже сделал ща :)
Hog
ща гист расшарю
Klei
И стадию вставляет. Надо дополнительно нажать. Но показывает код сразу.
Hog
Klei
Klei
Сказывается моя html безграмотность.
Klei
Наверное.
Klei
Короче с p не работает, а с div норм.
Hog
разобрались!
Hog
тоже в след. раз попробую fsx заместо md :)
Klei
Чую надо будет конкретно перепилить FsReveal. Местами очень громоздкий синтаксис. К тому же когда не находит фрагмент кода по ключу, пишет лишь о том, что он не найден, не указывая, какой именно. Когда ключей за полусотню, хрен найдешь. И нельзя подключить отдельный fsx файл, из которого можно было бы брать фрагменты.
Hog
я пришёл к выводу, что код на слайдах не нужен
Hog
ну или минимум
Hog
50 - это уже как-то перебор :)
Klei
У мя несколько иные задачи.
Klei
Собственно ради кода и собираемся.
Hog
самодокументирующаяся система?
Klei
Чего?
Hog
кода
Klei
Все еще не понял.
Hog
ранишь fsx - получаешь результат. ранишь fsreveal поверх - получаешь документацию
Klei
Короче я объясняю конкретные детали каких либо либ или синтаксиса. Объяснения общих концепций найдут и без меня. К тому же у мя люди готовы два-три часа слушить мое нытье про F#.
Klei
Hog
кстати - зачем инклюды? почему нельзя прям по месту? у тебя код по нескольку раз используется?
Klei
Потому что надо определить гораздо больше кода, чем требуется показать. Да бы все не скатывалось к настолько тупых примерам, что они не откладываются в памяти.
Klei
Ну и многократное использование вылазит.
Vasiliy
Играл тут кто в горизонт?
https://dtf.ru/38458
Система ИИ роботов как то напомнила акторы имхо
Vasily
Ну хз
Vasily
Интеллект там ,конечно, такой себе у мобов
Klei
Кто-нить понимает разницу между акторами и агентами?
Vasiliy
А про людей да, слабо
Romɑn
Hog
Ayrat
исправил логику в своей фразе
Klei
Ок.
Hog
Чо-то как-то всё равно не так
Hog
Dr. Friedrich
Nikolay
А как правильно в акторах сделать запрос к БД? 🤔
Nikolay
Отдельным актором на запрос?
Nikolay
Или просто в акторе вызывать функцию, которая сходит в БД, и отправит актору сообщение обратно после получения данных?
Nikolay
let getUserById userId actor =
async {
let! user = ...
actor <! user
}
Типа что-то такого, и вызывать её без await'a
Vagif
Vagif
Вот пример:
let scheduleMessagesActor (mailbox : Actor<_>) =
let rec loop () =
actor {
let! (msg : obj) = mailbox.Receive()
let db = AkkaDbUtils.getAkkaDbContext ()
return!
match msg with
| :? ScheduleMessageCommand as cmd ->
query {
for row in db.Dbo.ScheduledMessages do
where (row.MessageReference = cmd.Id && row.Triggered = false && row.Cancelled = false)
select row
} |> Seq.iter (fun row -> row.Cancelled <- true)
db.Dbo.ScheduledMessages.``Create(Cancelled, Message, MessageReference, MessageVersion, TriggerTime, Triggered)``(
false,
cmd.Message |> serializeObject,
cmd.Id,
cmd.Version,
cmd.TriggerDateTime,
false) |> ignore
db.SubmitUpdatesAsync ()
|> Async.pipeTo (retype mailbox.Self) (fun result -> { Command = cmd; Result = result })
loop()
| :? ScheduleMessageResult as result ->
let cmd = result.Command
match result.Result with
| Result.Ok _ -> sendAck mailbox cmd.Ack <| sprintf "Scheduled message for %s on %A" cmd.Id cmd.TriggerDateTime
| Result.Error exn ->
db.ClearUpdates() |> ignore
logErrorWithExnAckf mailbox exn cmd.Ack "Could not schedule message for %s" cmd.Id
sendNack mailbox cmd.Ack <| sprintf "Could not schedule message for %s" cmd.Id
loop()
| _ -> UnhandledMessage
}
loop ()
Vagif
Но есть и другого типа реализация, используя aggregate pattern, описанный у Бартоша (https://bartoszsypytkowski.com/dont-ask-tell-2/)
Vagif
Во втором сценарии запросы в БД делаются в отдельном акторе, т.е. разница не очень большая по сути ( вызывать в теле главного актора или отправлять в новый)