LINUX.ORG.RU

Clojure 1.9

 , ,


2

5

Clojure 1.9 наконец-то вышел.

Версия 1.9 содержит две главные новые возможности — интеграция с spec и cli-утилиты.

spec — это библиотека для описания структур данных и функций с поддержкой валидации, деструктурирования, документации, отчета об ошибках, генерации тестовых данных и обобщенной генерации тестов.

spec интегрируется в Clojure через две новые библиотеки:

Такая модуляризация облегчает обновление spec независимо от релиз-цикла Clojure.

Инструменты командной строки предоставляют быструю и лёгкую установку, Clojure REPL (!!!), использование Maven и локальных зависимостей, функциональный API для управления classpath.

Полный список изменений можно найти тут.

>>> Оригинал новости

Я так понимаю, Clojure пошла по стопам Python к поддержке опциональной типизации?

tailgunner ★★★★★ ()

Копипаста с матами эмоциональная, конечно. Но что то рациональное в этом есть. Меня тоже бесит эта синтаксическая вакханалия со списками и словарями. Но ею болеют все современные языки...

AVL2 ★★★★★ ()
Ответ на: комментарий от linuhs_user

Слишком мало буковок используется

drange Double/POSITIVE_INFINITY ::s/invalid [{:pred '(clojure.core/fn [%] (clojure.core/not (Double/isInfinite %))), :val Double/POSITIVE_INFINITY}]

Правда мало?

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Я так понимаю, Clojure пошла по стопам Python к поддержке опциональной типизации?

В python разве планируется такое? Ты с php не путаешь?

ertgblasd ★★ ()

А clojure подходит для разработки приложений под ведро? Вроде были туториалы, но как там дело обстоит на самом деле?

anonymous ()

Смысл CLI тулз так и не уловил. Есть boot, есть leiningen. Зачем плодить сущности?

Deleted ()

- Псс, парень, не хочешь немного новостей? Вот clojure новый вышел
- А что это?
- Не хочешь читать - отойти, не привлекай внимание

router ★★★★★ ()
Ответ на: комментарий от tailgunner

Мда, прямо таки провал идеи динамической типизации. То js статику прикрутят, то php то питону.

ertgblasd ★★ ()
Ответ на: комментарий от ertgblasd

Мда, прямо таки провал идеи динамической типизации.

Это хорошо, что приходит осознание.

P.S. в качестве троллинга - якобы динамическая типизация - это статическая типизация, в которой есть только один тип: многабукав

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Стопы Python вывернуты в обратном направлении.

t184256 ★★★★★ ()
Ответ на: комментарий от tailgunner
And this is precisely what is wrong with dynamically typed languages: rather than affording the freedom to ignore types, they instead impose the bondage of restricting attention to a single type!
...
languages that admit both modes of reasoning enable you and liberate you from the tyranny of a single type.

Ад.

pru-mike ★★ ()

Clojure REPL (!!!)

А может кто-то пояснить, откуда столько эмоций? Старый очеловечили или очередной новый завезли?

t184256 ★★★★★ ()
Ответ на: комментарий от ertgblasd

То js статику прикрутят, то php то питону

Хз, что там в жабоскрипте, но в пыхе тебя этим пользоваться никто не заставляет же.

WereFox ★☆ ()
Ответ на: комментарий от tailgunner

И чо? Разницу между синтаксисом самого языка и спеки понятна? Или надо специально разъяснять?

anonymous ()
Ответ на: комментарий от anonymous

специально разъяснять?

Нет. Ты всё равно не можешь объяснить лучше, чем ссылка на официальную доку.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

так о чем мы говорим, о синтаксисе кложи или о дсл одной из его библиотек?

Синтаксис кложи прост и изумительно продуман даже по сравнению с лишпом. Или есть что сказать против?

anonymous ()
Ответ на: комментарий от anonymous

так о чем мы говорим, о синтаксисе кложи или о дсл одной из его библиотек?

Я повторю ссылку: https://clojure.org/guides/weird_characters

Надеюсь, ты можешь понять, о чем там говориться.

Синтаксис кложи прост и изумительно продуман даже по сравнению с лишпом

Да, Lisp задал высокий барьер.

tailgunner ★★★★★ ()
Ответ на: комментарий от anonymous

Синтаксис замыкания просто ужасен. Он столь же мутный, как в лисп и столь же безумный, как в питоне.

AVL2 ★★★★★ ()
Ответ на: комментарий от AVL2

Мутный у тебя в голове, если путаешь clojure и closure.

anonymous ()
Ответ на: комментарий от anonymous

Да в этом вся мутность и состоит. Тут буковку подменили, там подставили. Не язык, а одна сплошная подстава...

AVL2 ★★★★★ ()

чтоо сделали с помощью этого языка программирования?

anonymous ()
Ответ на: комментарий от tailgunner

Там емнип с самого начала можно было помочь жвм, указывая типы.

slaykovsky ★★★ ()
Ответ на: комментарий от slaykovsky

По ссылке из новости написано, что этого было недостаточно.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Проблема в том, что осознание приходит только к людям, способным на создание ЯП. Хомячье после курсеры продолжает складывать числа со строками и оргазмировать от этого.

leave ★★★★★ ()
Ответ на: комментарий от dnb

Вот поэтому все там в бездуховном западе - реперы! Половина слов одной буквой отличается...

AVL2 ★★★★★ ()
Ответ на: комментарий от tailgunner

Это хорошо, что приходит осознание

Судя по std::any и dynamic в C#, процесс этот не односторонний.

anonymous ()
Ответ на: комментарий от leave

складывать числа со строками и оргазмировать от этого.

ты путаешь слабую типизацию с динамической.

provaton ★★★★★ ()
Ответ на: комментарий от provaton

Когда программа падает от неудачной попытки сложить число и строку, это немногим лучше.

tailgunner ★★★★★ ()

Clojure идеальный язык для всего. Хорошего что он развивается.

leprikon ()
Ответ на: комментарий от provaton

в Java можно сложить строку с числом:

String s = "Number = " + 10;
этот код валидный и скомпилируется. Самое интересно, следующий код уже не скомпилируется:
String s = 10 + " = Number";

Int64 ★★★ ()
Последнее исправление: Int64 (всего исправлений: 1)
Ответ на: комментарий от Int64

в Java можно сложить строку с числом:

String s = «Number = » + 10;

Ты не различаешь сложение и конкатенацию?

tailgunner ★★★★★ ()
Ответ на: комментарий от Int64

в Java можно сложить строку с числом:

String s = "Number = " + 10;

этот код валидный и скомпилируется.

Это называется «implicit cast». Здесь число приводится к строке и выполняется конкатенация (поскольку левый операнд является строкой). В общем случае любой объект можно привести к строке, поэтому такое поведение валидно (хотя и спорно).

Самое интересно, следующий код уже не скомпилируется:

String s = 10 + " = Number";

А здесь уже используется операция сложения (левый операнд — число), но очевидно, что к числу можно привести далеко не любой объект, поэтому автоматически кастовать правый операнд к числу недопустимо.

Virtuos86 ★★★★★ ()
Ответ на: комментарий от AVL2

Тут буковку подменили, там подставили

А кто виноват, что ты буквы путаешь? Плохо видишь - купи себе очки побольше.

anonymous ()
Ответ на: комментарий от tailgunner

программа падает от неудачной попытки сложить число и строку

Васян, ну зачем так тупить? Специально ведь проверила, не поленилась.

core> (+ "строка" 12)

java.lang.String cannot be cast to java.lang.Number

Это ошибка компилятора? Не?

anonymous ()
Ответ на: комментарий от RazrFalcon

Уровень криптографичности похож. Только тут скобочки нужно вычитывать, а там - закорючки.

dzidzitop ★★ ()
Ответ на: комментарий от dzidzitop

Скобочки вычитывать не нужно, emacs или что-то другое сделают это за тебя. А вообще очень хорошая практика - писать очень короткие фунции, не более 5 строк, кложа ведь функциональный язык.

anonymous ()
Ответ на: комментарий от Virtuos86

Это называется «implicit cast». Здесь число приводится к строке и выполняется конкатенация (поскольку левый операнд является строкой). В общем случае любой объект можно привести к строке, поэтому такое поведение валидно (хотя и спорно).

нет, вызывается StringBuilder.append(int)

O02eg ★★★★★ ()

Clojure REPL (!!!)

Пока наши корабли бороздят просторы вселенной…

awesomelackware ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.