Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
- Telegram Web
Telegram Web
внимание, я ускорил компиляцию niva файлов в 2 раза убрав проброс input chэнела

спасибо за внимание, gradle мир удивителен, нинавижу
https://github.com/AasishPokhrel/shit/issues/1
1000000000ная репа создана каким то зеро html рандомом)
gavr_sas
Помойму Swift уже реально соперничает с С++ https://github.com/swiftlang/swift-syntax/blob/main/Sources/SwiftSyntax/generated/Keyword.swift#L753 759 - 962, 203 кейворда вполне выучабельно
небольшой кек, Root — как Swift, только отвечает всем требованиям!!!(не готов)

Нашел по упоминанию Smalltalk
Да я переодически просматриваю все репы гитхаба с "Smalltalk language" ^_^

ну почиму не на англе??
https://github.com/i-am-dies/Root-Language
мой друг сделал иконку свояму яп quill
(нет это не коктель! это перо в чернильнице(quill - перо))

https://github.com/schwalbe-t/quill
type narrowing > pattern matching ??

слева в моем яп общий тип FileSystem просто сужается в ветках до типов против которых матчим

справа полноценный паттерн матчинг с деструктиризацией полей

пример взят отсюда
https://effekt-lang.org/tour/adts

(а еще у меня есть фича декларации общих полей для всех веток ADT (name))
опача, новый векторный редактор, пока в основном рисует линии, но зато работает в браузере спасибо Wasm
https://graphite.rs/
https://editor.graphite.rs/
https://github.com/GraphiteEditor/Graphite
кряк
https://oxcaml.org/

Окисленный OCalm — набор расширения(аля расширения хаскель компиля) добавляющий в ML
- более высокоуровневые примитивы для параллелизма
- SIMD примитивы
- unboxed types (стек)
- data-race-free parallelism трекинг использований канкарнет валуёв шоб превентить гонки

- моды похожие на типы, описывают как используются значения, делятся на past и future, моды прошлого трекают предыдущие значения, будущего - возможные использования. можно ли возвращать из функции, передавать между потоками, изменять
примеры
- мод будущего - local - значение нельзя передавать за пределы текущего скопа, global наоборот
юзается для аллокаций на стаке
- мод прошлого uncontended — к значению обращался только один поток rw
shared — значение читали из нескольких потоков r
contended — в значение могут писать другие потоки w

Submoding: значение можно поднимать в более строгие моды но не наоборот (из local в global)
Mode-crossing types: некоторые типы вроде интов не зависят от модов вообще

TLDR - rust для OCaml
Приколы с работы, ну вы токо посмотрите наскоко линь гигачадовый

UPD: а найс, значит лаги были только в реальности, а обсом оно не записалось, на винде при расширении окна было меньше 1 фпс, оно просто телепартировалось(помимо бага который все таки записался)
все внимательно тонем в жабе
анг сокращения
idk
iirc
fyi

ру сокращения
хз
ъеъ
Такс внимание, я узнал что эффекты бывают двух видов

tail resumptive
продолжают выполнение только последним экспрешоном, правила такие же как в тэйл рекурсии

умные троли говорят что такие системы неотличимы от тупых трейтов, тк кк по сути им эквивалентны(соглы)

Вот самые простоые примеры
не продолжаем вообще:
def unsafeDiv(a: Double, b: Double): Double / {} =
try {
div(a, b)
} with Exception {
def throw(msg) = {
panic(msg)
}
}

Продолжаем в конце
def tellTime[A] { prog: () => A / tell }: A =
try { prog() }
with tell { () =>
resume(bench::timestamp())
}

или вот еще, продолжения 2, но оба внутри иф елса
def filter[A] { keep: A => Bool } { prog: () => Unit / Yield[A] }: Unit / Yield[A] =
try prog()
with Yield[A] {
def yield(x) = if (keep(x)) { do yield(x); resume(()) } else { resume(()) }
}


multi-shot эффекты
могут продолжаться несколько раз, или в середине
ровно в тысячу раз сложнее в реализации, сначала я даже не мог понять, каким это образом можно продолжить из эффекта код 2 раза
код
код
переменная
x = эффект
код2

handle эффект {
код
resume(1)
код
resume(2)

}


Так вооот, оно блять копирует котинуэйшон, то есть по сути кусок всего кода после эффекта, вместе с текущим стеком, и просто запускает его, в данном случае 2 раза
resume(1) запустит КОПИЮ код2 в кором в стеке x будет равно 1, resume(2) запустит тот же код еще раз, абсолютно изолированно от первого запуска, но с x = 2

а теперь представим что внутри продолжения есть вызовы других эффектов, насколько сложным это все начинает быть с ветвлением
gavr_sas
Такс внимание, я узнал что эффекты бывают двух видов tail resumptive продолжают выполнение только последним экспрешоном, правила такие же как в тэйл рекурсии умные троли говорят что такие системы неотличимы от тупых трейтов, тк кк по сути им эквивалентны(соглы)…
то есть, страшно подумать, но вот здесь

val x = choose(1, 2, 3)
val y = choose(4, 5)
println(x + y)

fun handleChoose(choices: List<Int>, k: (Int) -> List<Int>): List<Int> =
choices.flatMap { choice -> k(choice) }


с таким хендлером, запустятся все варианты choose
1 + 4 = 5
1 + 5 = 6
2 + 4 = 6
2 + 5 = 7
3 + 4 = 7
3 + 5 = 8

то есть это уже полиморфизм какого то нереального уровня, мы можем поставить эффект с обычным рандомом, а можем такой который переберет нам все возможные варианты
(чую нужен пост про эффекты в целом)
алгебраические эффекты, это ответ монадам в сторону упрощения!
#ENA

Они решают все проблемы программирования!
- цветные🏳️‍🌈 функции
- корпоративную💼 многозадачность
- генераторы
- эксепшоны(этот пример даже был выше)
- полиморфизм наивышего уровня, ООП сасать
пример имеем дженерик код вызывающий эффект лог

вызываем этот лог с хендлером который пишет в базу\ пишет в мок базу\ пишет в консоль

- глобал стейт\инверсия зависимостей
хуясе че функциональщики придумали
def unsafeDiv(a: Double, b: Double): Double / {} =
try {
div(a, b)
} with Exception {
def throw(msg) = {
panic(msg)
}
}

def main() = {
unsafeDiv(1.2, 0.0)
()
}


> /Fun/Effekt/out/hello.js:146
else throw e
^
division by zero
(Use `node --trace-uncaught ...` to show where the exception was thrown)

Node.js v24.2.0
[error] Process exited with non-zero exit code 1.


афигенно, спасиба папаша, за этот замечательный "стек трейс"
Просто вывело что был throw Внутри сгенерированного js кода!
(Effekt - язык университетских скалистов)

я что один думаю как это потом будет юзаца, тоже ведь кодогеню, но вывожу из стактрейса оригинальные строчки, пока это возможно(скрин)
2025/06/18 20:39:15
Back to Top
HTML Embed Code: