@Fsharp_chat

Страница 718 из 772
Friedrich
17.09.2018
14:52:53
Я думаю, можно. Надо попробовать.

Vladimir
17.09.2018
14:53:06
ага, хочу чтобы мог вызывать BinaryDeserialize с любым типом из того что предлагает перегрузка

Friedrich
17.09.2018
14:53:14
а кстати в inline if ы на типы нельзя писать в теле функции?
В FSharp.Core даже специализации можно писать!

Google
Vladimir
17.09.2018
14:53:59
Да. Типизируй.
вот пока и не могу понять как)

Vlad
17.09.2018
14:55:16
если инлайн то ты ^Type писать должен

Александр
17.09.2018
14:56:12
вот пока и не могу понять как)
let BinaryDeserialize<'T> (bytes:byte[]) =... вроде

Vasily
17.09.2018
14:56:35
Vladimir
17.09.2018
14:57:42
let BinaryDeserialize<'T> (bytes:byte[]) =... вроде
да, это если я ограничусь только одной перегрузкой

Evgeniy
17.09.2018
14:59:39
@Lanayx Стандартный трюк - через вспомогательный тип и операторы.

Vladimir
17.09.2018
15:01:43


Roman
17.09.2018
15:02:43
а что за ошибка подчеркнута?

Vladimir
17.09.2018
15:03:41
что or там нельзя писать

интересно что and там разрешается

Roman
17.09.2018
15:04:42
интересно что and там разрешается
let inline replace_instance< ^a, ^b, ^c, ^d when (^a or ^c): (static member replace: ^b * ^c -> ^d)> (a: ^b, f: ^c) = ((^a or ^c): (static member replace: ^b * ^c -> ^d) (a, f))

Vladimir
17.09.2018
15:05:17
в доку я тоже уже залез) но там не то немноо

Google
Evgeniy
17.09.2018
15:05:40
подскажешь?)
Когда у компьютера буду.

Vladimir
17.09.2018
15:05:45
пасиб

Vasily
17.09.2018
15:07:42
or низя, да

Мы тут периодически мусолим тему с анонимными DU

Вот or - это к этому

Grigoriy
17.09.2018
16:24:48
Привет, Василий!

Vasily
17.09.2018
16:29:49
Вечно вы, Григорий, с ботами здороваетесь

Evgeniy
17.09.2018
16:30:10
@Lanayx Есть стандартный паттерн, но для него нужно бойлерплейт писать. http://bit.ly/sharplab-2xiB2Dr

Grigoriy
17.09.2018
16:30:27
Evgeniy
17.09.2018
16:34:29
@Lanayx Ну, ты, наверное, видел это в TaskBuilder, только там еще приоритеты были.

Я не знаю, как это иначе можно решить с помощью SRTP.

Vladimir
17.09.2018
17:39:59
Пасиб, надо это сохранить куда-нибудь

Grigoriy
17.09.2018
18:04:50
Привет, Олег!

Vladimir
17.09.2018
18:05:27
Правда выглядит так, что проще руками все перегрузки прописать для своего класса

Evgeniy
17.09.2018
18:12:59
Vladimir
17.09.2018
18:14:57
Задача вызывать свою обёртку десериализатора, чтобы не привязываться к конкретной имплементации, в то же время не потерять перегрузки

Evgeniy
17.09.2018
18:16:21
Ок. Другой вариант — передавать десериализатор через тип-параметр, но это синтаксически некрасиво. :(

Ладно. Доброй ночи.

Vladimir
17.09.2018
18:20:31
Доброй!

Google
Evgeniy
17.09.2018
18:23:35
Ну, да, такое себе. Зато обобщенно. :) let inline BinaryDeserializeGeneric< ^Deserializer, ^In, ^Out when ^Deserializer : (static member Deserialize : ^In -> ^Out)> (input: ^In) : ^Out = (^Deserializer : (static member Deserialize : ^In -> ^Out) (input)) let bar : obj = BinaryDeserializeGeneric<MessagePackSerializer, _, _> bytes

Roman
18.09.2018
05:26:53
Читаю https://swlaschin.gitbooks.io/fsharpforfunandprofit/content/posts/understanding-fsharp-expressions.html там в конце есть такой пример // create a clone of if-then-else that accepts functions rather than simple values let test b t f = if b then t() else f() // call it with two different functions test true (fun () -> printfn "true") (fun () -> printfn "false") и подпись The problem with this is that now the "true" function might be evaluated twice by mistake, when we only wanted to evaluate it once! Как это первая лямбда может быть вызвана дважды ?

и дальше советуется использовать lazy // create a clone of if-then-else with no restrictions... let test b t f = if b then t else f // ...but call it with lazy values let f = test true (lazy (printfn "true")) (lazy (printfn "false"))

или я путаю eval и call ? ?

Vlad
18.09.2018
09:08:15
@fvnever System.IO.FileLoadException: Could not load file or assembly 'FSharp.Core, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Could not find or load a specific file. (Exception from HRESULT: 0x80131621) ---> System.IO.FileLoadException: Could not load file or assembly 'FSharp.Core, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. не знаешь в чем бага флюент мигратора?

Vasily
18.09.2018
09:19:26
Ну, похоже, FSharp.Core не тот

Friedrich
18.09.2018
09:39:02
Они даже специально добавляли референс на FSharp.Core зачем-то.

Но, кажись, это добавило ещё больше проблем, чем решило :)

Vasily
18.09.2018
09:39:34
С фиксированной версией добавляли?

Friedrich
18.09.2018
09:39:42
https://github.com/fluentmigrator/fluentmigrator/issues/883

Vlad
18.09.2018
09:40:01
Ох блин, там же с этим жопа какая-то
Я ща попытаюсь внутри стартапа запустить их

Мб там заработает

Friedrich
18.09.2018
09:40:57
В стародавние времена я его лечил тем, что добавлял референс.

Но щас многое поменялось уже...

Google
Vasily
18.09.2018
09:41:45
Попробуйте из нугета пакет поставить

Vlad
18.09.2018
09:46:01
слава коммунизму, миграция прошла

services.AddFluentMigratorCore() .ConfigureRunner( fun run -> let assembly = typeof<CreateTablesMigration>.Assembly run.AddPostgres().WithGlobalConnectionString(connectionString).ScanIn(assembly) |> ignore) |> ignore и let migrateUp() = use serviceScope = app.ApplicationServices.CreateScope() let runner = serviceScope.ServiceProvider.GetRequiredService<IMigrationRunner>() runner.MigrateUp() migrateUp()

примерно так

Ulan
18.09.2018
10:54:53
Здравствуйте

Для чего нужен фи шарп ?

Friedrich
18.09.2018
10:55:38
Чтобы на нём писать код!

Vasily
18.09.2018
10:55:44
Философский вопрос

Andrew
18.09.2018
10:56:05
Фи-шарп :D

Pavel
18.09.2018
10:58:24
Для чего нужен фи шарп ?
Я сам не могу понять

Ох уж эти понацейщики: аджаил, проектирование (патерны, диаграммы классов, логическая модель бд), тдд, функциональщина

Ничего из этого не работает

А универе говорили, что работает

Обманули

Pavel
18.09.2018
11:12:21
че у тебя там в функциональщине не работает то?

Pavel
18.09.2018
11:13:01
https://github.com/LykkeCity/

Низя юзать фи-шарп

Он плохо совместим с нашими месными либами

Да и просто нельзя

Pavel
18.09.2018
11:14:36
ну так лапки ваши виноваты. он то тут причем. а фунциональщины и в с# выше крыши

Google
Ayrat
18.09.2018
11:15:02
https://github.com/LykkeCity/
О, у меня в этой конторе товарищ работает через кроссовер

Ayrat
18.09.2018
11:15:47
И как доволен?
Кроссовером или конторой?)

Pavel
18.09.2018
11:15:57
И тем и тем

Ayrat
18.09.2018
11:16:24
Доволен. Говорит по началу жопа горела

Pavel
18.09.2018
11:16:44
ну так лапки ваши виноваты. он то тут причем. а фунциональщины и в с# выше крыши
https://ru.wikipedia.org/wiki/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5

Ну вот как бы, я не про-то

Да, я тоже делаю неизменяеммые классы

И т.д.

Но от фи-шарпа мне нужна только система типо и сравнение с образцом

А про всякую лямбда-муть я знать не хочу

Pavel
18.09.2018
11:19:39
и. проблема то где?

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