gavr
и при этом он в отличии от лиспов, является JIT компилируемым, а не тупо интерпретатором
Добро пожаловать на мой TED Talk по #Smalltalk
gavr_sas
Добавил в свой яп мутабильные переменные, считаю все эти var val let const а уж тем более растовое let mut вредным юзлесом, объявление переменной должно быть a = 1 и се. Ну если мутабельная`mut a = 1` let mut вообще очень нелогично выглядит, let объявляет…
Следующая цель добавить while циклы, никаких захардкоженный синтаксисов практически нет, поэтому это просто сообщение whileTrue для блока кода результатом которого является bool
Scala Higher-Kinded Types эквивалентны функции расширения дженерик параметра T, с новой фичей контекст ресиверов Kotlin
Scala sasat!
А сами по себе контекст ресиверы это способ пробросить функционал от какого то класса/интерфейса в функцию, не передавая в нее явно параметры, этот функционал появится у this, немного похоже на скалины имплиситы, только все эксплисит
Вот примерчик, сверху дженерик функция, куда через контекст передается JsonScope(интерфейс у которого 1 функция
Теперь мы внутри
Scala sasat!
А сами по себе контекст ресиверы это способ пробросить функционал от какого то класса/интерфейса в функцию, не передавая в нее явно параметры, этот функционал появится у this, немного похоже на скалины имплиситы, только все эксплисит
Вот примерчик, сверху дженерик функция, куда через контекст передается JsonScope(интерфейс у которого 1 функция
toJson() для дженерик A) и логгер, интерфейс у которого функция info()Теперь мы внутри
printAsJson можем нахаляву "из ниаткуда" вызывать toJson() и `info()`а в main мы явно пробросили 2 объекта через with, которые подходят под эти интерфейсы #langThis media is not supported in your browser
VIEW IN TELEGRAM
Наглядный пример работы Mark & Sweep GC