LINUX.ORG.RU

Clojure 1.8

 , ,


1

4

Свершилось! Под бурные аплодисменты состоялся новый релиз этого замечательного языка.

Основные новшества:

  • Функции index-of, last-index-of, starts-with?, ends-with? добавлены в clojure.string.
  • Сокет-сервер с REPL
    -Dclojure.server.repl="{:port 5555 :accept clojure.core.server/repl}"
    
    $ telnet 127.0.0.1 5555
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    user=> (println "hello")
    hello
    
  • Direct linking

Большое количество улучшений и исправлений

>>> А ещё у них обновился сайт :-)

★★★★★

Проверено: Klymedy ()
Последнее исправление: Debasher (всего исправлений: 6)

А вот и первая ошибка вылезла

> (defn square 10)
java.lang.IllegalArgumentException: Don't know how to create ISeq from: java.lang.Long

Odalist ★★★★★
()

Похоже это единственный достойный вариант работать с jvm. А если наличие jvm не критично, общелисп и ракета все же предпочтительнее.

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

Чет не верю что у них нет тестов на такой простой кейс.

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

Уже миллион раз обсасывалось. Просто не называй эту хрень лиспом. Есть схема, и вот ещё клоужа. Разные язычки. Можно использовать.

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

Всё правильно, после названия функции должен идти список аргументов.
Обычно это вектор, он реализует ISeq, а у тебя там лонг.

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

Ага, как и с++ и с в семействе алгола, только совсем разные языки. К тому же даже лисп не упомянут в названии языка, то есть от каноничного лиспа они отказались — такой недоскала со скобочками от лиспа на жвм онли. Жабадрочерам как раз в тему.

Oxdeadbeef ★★★
()

Сокет-сервер с REPL

Если переопределить функцию то требуется перекомпилировать функции, которые ее используют?

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

на жвм онли

WUT?!
как минимум еще дотнет и жс

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

почему хрень?

public interface IFn extends Callable, Runnable{

public Object invoke() ;

public Object invoke(Object arg1) ;

public Object invoke(Object arg1, Object arg2) ;

public Object invoke(Object arg1, Object arg2, Object arg3) ;

public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4) ;

public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5) ;

public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6) ;

public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7)
		;
...

Продолжи цепочку.

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

Опробовал ихний

Правильно будет «опробывал».

anonymous
()

Свершилось!

не припомню ни одной программы на каложуре так что вряд ли он кому-то нужен

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

ну напомните тогда уж, чего там не хватает до лиспа

отсутствие вакансий и реальной сферы применения

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

Продолжи цепочку.

И чо? Это ограничения Java, можно было бы написать короче, но потерять в скорости, потому видимо решили единственно адекватным способом, который был.

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

Я не спрашивал «почему так?», я говорил «почему хрень». Если платформа позволяет писать под нее одну лишь хрень, это не значит, что хрень автоматически перестает быть хренью.

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

Всё правильно, после названия функции должен идти список аргументов.
Обычно это вектор, он реализует ISeq, а у тебя там лонг.

Спасибо. Буду пробовать дальше.

Odalist ★★★★★
()
Последнее исправление: Odalist (всего исправлений: 1)
Ответ на: комментарий от no-such-file

С/C++

Конечно не имеет, так как не существует такого языка.

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

Возможно, вы имели в виду: (def square 10)

Спасибо. Да, я это имел в виду. Теперь все нормально.

> next
> (def square 10)
#'sandbox10503/square
>

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

Под крики и стоны?

Это ко всяким C++-сирам и Go-внячерам :-)

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

А «каноничный лисп» - это кто?

Это тот, в котором для структурирования кода используются только списки.

no-such-file ★★★★★
()
Ответ на: комментарий от anonymous

Мам, а почему в треде не пахнет борщом?

Борщевикам неинтересен реальноиспользуемый язык

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

Продолжи цепочку.

Это оптимизация производительности, в жабе есть varargs только его использование ведет к порождению массива, там в конце наверняка он и прописан. Условности жабы, при чем тут clojure?

anonymous
()

Нормальный язык чтобы повтыкать на каком-либо домашнем проекте для развития функционального мышления, но писать на нем серьезный проект вряд ли кому-то захочется, за исключением пары случаев, которые лишь подтверждают правило.

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

Если переопределить функцию то требуется перекомпилировать функции, которые ее используют?

Нет, сами подхватят, без перекомпиляции. Там есть дополнительный слой индирекции между именем функции и реальной функцией.

unlog1c ★★★
()

Хороший язык, используем в продакшене как и Лисп. Оба имеют свое применение.

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

х86 опкоды вообще хрень нечитаемая, значит абсолютно все языки, которые компилируются/транслируются в x86 - хрень

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

«уютненький»? ты о чем?

по теме, лисп с собственным блекджеком и ... ну вы понели) На самом деле интересно только одно написание сервер и клиент конда в одном ключе.

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

Забейте уже Скалу в дупу. Ну не взлетела, ну лано. Есть масса языков более интересных, которые скорее всего тоже не взлетят) Це: Го, Раст, Dи. На мой взгляд это всё гораздо интереснее чем Скала, у них хотя бы еще есть шанс, шо взлетит)

anonymous
()

чё это вообще такое и нафига нужно это «ненужно» ?

anonymous
()

Здравствуйте!

Знание - сила. Ф. Бэкон.

anonymous
()

О да, ждала релиза. Надо обновиться. Спасиб за новость =)

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

Это может быть по причине производительности. Всё таки Clojure динамический язык, а базовые абстракции должны иметь максимальную производительность.

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