Vasily
В общем, elmish.wpf пока отправляется на свалочку, походу
Vasily
ПОтому как слабо применима в реальных сценариях
Vasily
Как это ни прискорбно
Pavel
ну как я понял это пока всего лишь прототип
Vasily
Да там все прототипы
Vasily
ПОходу
Vasily
Лан, буду свой писать
Vasily
С акторами
Pavel
ну оригинальный Elmish вполне себе production ready, а вот возня Сайма с Xamarin и WPF - прототипы
Vasily
Ну в оригинальном elmish нет проблемы шаблонов
Vasily
Там, как я понимаю, на выходе html
Pavel
да, все так
Vasily
Тут ситуация посложнее
Pavel
поэтому я и не особо верю в идею TEA для Xamarin или WPF
Vasily
И к ней не имеет смысла подходить с позиций веба
Pavel
ну в случае с легаси XAML-based фреймворков - да
Vasily
Вот надо тебе десктоп написать
Vasily
Что выберешь?
Pavel
а вот тот же Flutter от гугла показал, что React-way вполне пригоден для мобильников
Pavel
не кидайте сильно какашками ))
Vasily
КОторый жрет дожопы?
Vasily
Мне все же надо, чтобы надежно работало
Pavel
ну, как говорил Айрат, коль есть примеры годных приложений, значит можно сделать как минмум не хуже :)
Vasily
Ща покумекаю, как актор модель без напряга встроить, и все будет ок
Vasily
Скорее всего модель и будет актором
Pavel
Я было эксперементировал с Akka.net + UWP . Норм, работало :)
Vasily
Какой подход использовал?
Vasily
Как в модели данные передавал?
Pavel
О какой модели речь?
Vasily
ViewModel
Pavel
создавал actor который связывал модель с представлением
Pavel
он держит ссылку на VM и при получении каких-либо сообщений мутировал ее
Vasily
А, ну я похожий использую
Pavel
да, в принципе простой и рабочий вариант
Romɑn
https://twitter.com/migueldeicaza/status/1018632568374218752?s=19
Romɑn
Я не оч понял
Fail
Рашен хакерс
Vasiliy
блин, может знает кто: При публикации БД dacpac (mssql) надо чтоб удалились вьюхи. 4шт. Но сколько раз я генерирую скрипт, там нет кода для удаления вьюх. И вьхи удалены из схемы ssdt
Vasily
Там можно рукопашные скрипты писать, это раз
Vasily
Во-вторых , если в актуальной базе не было вьюх, то и код сгенерен не будет
Vasily
Еще и Post есть вроде
Vasily
Но все это хорошо работает, когда в базе хранится версия
Vasiliy
Во-вторых , если в актуальной базе не было вьюх, то и код сгенерен не будет
да в этом и прикол. Вьюхи были удалены из Source, но они в упор не удаляются из target БД.
Vasily
Я с этим лет 5 назад плотно баловался
Vasiliy
Но все это хорошо работает, когда в базе хранится версия
версия? типо обновлять или не обновлять записи в бд? кстати, а хорошая мысль. Мы просто через проверку делаем IF EXSITS
Vasily
Заводится табличка с версией бд
Vasily
И кастомные скрипты опираются на нее
Vasily
Запускаться им или нет
Vasily
Это довольно много проблем убирает
Vasiliy
ааа неее. Я думал через байт массив. Типо вставились данные версия +1
Vasiliy
хотя с чем сравнивать тогда. Короче спасибо)
Vasily
ПЖлст
Ayrat
Так судя по докам https://wiki.haskell.org/Heterogenous_collections#Existential_types Мне нужны: - HList - Existential types Но это уже какой-то OOHaskell 👽
type Showable = abstract member Show: unit -> unit type Showable<'a>(item: 'a) = interface Showable with member __.Show() = item.ToString() |> printfn "%s" let pack anything = Showable anything :> Showable let hlist = [ pack "1" pack 1 pack (Some 1.)] hlist |> List.iter (fun x -> x.Show()).
Ayrat
генерик интерфейс чтобы избежать боксинга, т.к. он всё к obj сведёт
Ayrat
ну началось
Ayrat
:D
Igor
Так для этого все и задумывалось, зачем мне обертки что бы в итоге дергать toString() 🤷‍♀️
Ayrat
ну так сейчас и получается что show для каждого типа по-своему реализуется
Ayrat
ToString() дёргается от дженерика 'a
Ayrat
ты там можешь чо хочешь написать
Ayrat
хоть ad-hoc полиморфизм, что как бы полиморфизм, но почему-то презираемый. Математически он полиморфизм поэтому любители чистоты просто мозги ебут
Ayrat
вот тебе разная реализация через ад-хок :D Но т.к. боксинга не избежать, то удалим ненужный генерик интерфейс и бесполезный pack let polyShow x = x |> box |> function | :? string as s -> sprintf "Это строка %s" s | :? int as u -> sprintf "Это число %d" u | :? Guid as g -> sprintf "Это гуид %O" g | x -> sprintf "Это какое-то говно %A" x type Showable(any: obj) = abstract member Show: unit -> unit default __.Show() = polyShow any |> printfn "%s" let hlist = [ Showable "1" Showable 1 Showable (Some 1.)] hlist |> List.iter (fun x -> x.Show())
Ayrat
заметим что функция polyShow уаще нормально отинферилась как 'a -> string
Vasily
Акки обписался,походу :)
Ayrat
:D
Vasily
Боксинг же фуфуфу
Ayrat
Я просто люблю рабочие решения
Ayrat
согласен, поэтому вариант выше лучше
Vasily
Там проще можно
Ayrat
через генерик без боксинга
Vasily
Хотя не
Vasily
Через op_explicit не получится
Ayrat
к сожалению F# чот не умеет матчить типы без боксинга. Я его понимаю чутка, но не понимаю