Уже могу сделать Result, крута
Потребовалось реализовать пустые конструкторы без параметров в резолвере типов
А вот реализовать unwrap система типов пока не позволяет(
Походу нужно вводить Bottom тип: Nothing
И надо бы подглядеть как это в остальных яп решают, шо там в расте например, помойму Nothingа там нет
#niva
Потребовалось реализовать пустые конструкторы без параметров в резолвере типов
А вот реализовать unwrap система типов пока не позволяет(
Походу нужно вводить Bottom тип: Nothing
И надо бы подглядеть как это в остальных яп решают, шо там в расте например, помойму Nothingа там нет
#niva
gavr_sas
Уже могу сделать Result, крута Потребовалось реализовать пустые конструкторы без параметров в резолвере типов А вот реализовать unwrap система типов пока не позволяет( Походу нужно вводить Bottom тип: Nothing И надо бы подглядеть как это в остальных яп решают…
Ну вот спустя 6-7 часов кодинга оно работает.
1) я не сразу додумался что если у веток потомков есть дженерик поля, то теже дженерик поля нужно добавлять и в Root, иначе при вызове функций будет невозможно вывести дженерик параметр, а также внутри матчей придется делать касты as T, потому что чертовы дженерики erased в JVM
То есть тут не видно, но и Option и Non это тоже дженерик типы, у Option тоже T что у Some, а вот у None забавное Nothing, что тоже не так уже и очевидно, ведь полей то у него нет.
2) Добавление bottom типа
Тк кк
1) я не сразу додумался что если у веток потомков есть дженерик поля, то теже дженерик поля нужно добавлять и в Root, иначе при вызове функций будет невозможно вывести дженерик параметр, а также внутри матчей придется делать касты as T, потому что чертовы дженерики erased в JVM
То есть тут не видно, но и Option и Non это тоже дженерик типы, у Option тоже T что у Some, а вот у None забавное Nothing, что тоже не так уже и очевидно, ведь полей то у него нет.
2) Добавление bottom типа
Nothing, который является локальным подтипом всех типов, что дает возвращать его из веток switch(все ветки switch должны возвращать один и тот же тип).Тк кк
Nothing в компараторе типов с чем угодно дает true
gavr_sas
Ну вот спустя 6-7 часов кодинга оно работает. 1) я не сразу додумался что если у веток потомков есть дженерик поля, то теже дженерик поля нужно добавлять и в Root, иначе при вызове функций будет невозможно вывести дженерик параметр, а также внутри матчей…
Float pi == 3.14) Потому что я не хочу сначала создавать экземпляр эксепшона, а потом уже отдельным сообщением его throwить, это тупа, так что вот
throwWithMessage вызывается напрямую на Error, а не на экземпляре Error, потому что конструкторPS ну и да, Error, а не Exception, потомушо пишется проще ^_^
gavr_sas
чертовы капиталисты 3) Добавил кастомные Keyword конструкторы типов(раньше были только unary, типа Float pi == 3.14) Потому что я не хочу сначала создавать экземпляр эксепшона, а потом уже отдельным сообщением его throwить, это тупа, так что вот throwWithMessage…
я каждые пять минут во время разработки
💯2👍1😁1
WebAssembly GC is now enabled by default in Stable(!) Chrome!
https://developer.chrome.com/blog/wasmgc/
#wasm
https://developer.chrome.com/blog/wasmgc/
#wasm
Chrome for Developers
WebAssembly Garbage Collection (WasmGC) now enabled by default in Chrome | Blog | Chrome for Developers
There are two types of programming languages: garbage-collected programming languages and programming languages that require manual memory management. With to WebAssembly Garbage Collection, garbage-collected languages can be ported to WebAssembly.
сори, но тг неудобный, скину так
Классные слайды объясняющие зачем в самой спецификации Wasm GC
Классные слайды объясняющие зачем в самой спецификации Wasm GC
Forwarded from gavr
пропосалы которые сильнее всего повлияют на васм перфоманс
симд и треды понятно, тэил позволит юзать корутины, функциональные языки
мемори64 позволит выделять в васме более 4гигов памяти и легче портировать код 64битный
js промисы — вызов асинхронного кода из синхронного без оверхеда, это чисто их V8
симд и треды понятно, тэил позволит юзать корутины, функциональные языки
мемори64 позволит выделять в васме более 4гигов памяти и легче портировать код 64битный
js промисы — вызов асинхронного кода из синхронного без оверхеда, это чисто их V8