#PolitMatchDev #scala #haskell
Я ПОТРАТИЛ НА ЭТО ЧАС.
Haskell программисты поймут.
А, и ещё, Scala не может infer-ить типы параметров _-функций (например _.or("<null>") - анонимная функция). Для этого нужен optionOr.
#politmatchdev #scala #haskell
#PolitMatchDev #programming #scala #metaprogramming #kotlin
Kotlin или Scala - и почему сервер будет написан почти полностью на втором.
Интересный вопрос - Kotlin или Scala.
У первого есть большая экосистема и все возможности для создания DSL (Domain Specific Language)-ов.
Но у второго есть почти вся система типов Rust (что для меня всегда является плюсом), например ассоциированные типы (trait A { type B }), или алгебраические типы данных (enum E { case I(int: Int); case B(bool: Boolean) }).
Без последнего жить можно, и аналог Jetpack Compose не везде можно встретить.
Но что стало для меня последней каплей для перехода на Scala - наличие макросов и аннотаций-макросов.
Уже написав примерно 1к строк Scala кода, я могу сказать что выбор был сделан правильно, ибо при наличии макросов и куда более развитой системе контекстов, extension'ов, адаптировать API написанные под Java (и добавлять свои приколы, например неявное преобразование шестнадцатеричных цветовых строк в объекты TextColor) стало намного легче. Тем более синтаксис "типа переменных" (def what: ReturnType) помогает намного больше чем я думал вначале.
Кстати, для разработчиков: я хоть и не буду опенсорсить сами плагины сервера, но некоторые части их (например gloryxlib, что-то типа слоя совместимости Sponge и Scala и вообще библиотека утилит) - на здоровье.
В gloryxlib скоро так же появится макрос, генерирующий DataManipulator'ы. (те кто знают, поймут боль.)
На сегодня болтовни про вещи которые игрокам скорее всего нафиг не сдались, хватит. Спасибо за внимание и приятной игры.
#politmatchdev #programming #scala #metaprogramming #kotlin