Комментарии 38
Чего? Друзья такого не поймут! Хоть это и не однострочник, но вот это их удивит точно 99-bottles-of-beer.net/language-perl-737.html
А вот этот пожалуй способен разозлить.
А то что привели Вы…
А вот этот пожалуй способен разозлить.
cat "test... test... test..." | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'
А то что привели Вы…
-18
Не вижу ничего очень крутого. То что реально коротко — просто функции из стандартной библиотеки, а то что немного подлиннее на том же javascript'е будет примерно так же выглядеть.
+10
В любом случае плюсую, функциональные языки — наше всё!
0
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
а зачем в
a = list([i * 2 for i in a])
вызывать list? [i * 2 for i in a]
— уже сам по себе дает на выходе список+1
a = list([i * 2 for i in a])
А зачем здесь list? Генератор списка и так возвращает список.
a = [i * 2 for i in a]
+1
Что реально выделяет схему из большинства других языков, так это очень изящная макросистема и call/cc
А то что описано здесь — баловство, доступное первокурснику с LINQ. Никакого особенно «впечатления» не производит
А то что описано здесь — баловство, доступное первокурснику с LINQ. Никакого особенно «впечатления» не производит
+7
> изящная макросистема
И бесполезная. Последний раз провозившись с ней два часа, сделал (require mzlib/defmacro) и написал макрос за десять минут.
Зато изящная, да. Схема вообще изящная.
И бесполезная. Последний раз провозившись с ней два часа, сделал (require mzlib/defmacro) и написал макрос за десять минут.
Зато изящная, да. Схема вообще изящная.
0
> И бесполезная
А вот ни фига. Я вообще смутно понимаю любовь к закату солнца вручную как самоцель. Ну вот low level разработчики гоняют байты для того, чтоб было быстрее/меньше по размеру. А зачем гонять вручную s-выражения в стиле define-macro/defmacro? Зачем ручная гигиена, если она нужна в подавляющем большинстве случаев и удобнее как раз ее вручную нарушать при необходимости? Какие преимущства это дает?
Как по мне, люди, предпочитающие defmacro-style макросы просто расписываются в своей неспособности понимать/создавать абстракции (в данном случае синтаксические).
С другой стороны, как же уже хочется нормальных макросов в мейнстриме (желательно нативном). Хотя бы и с ручным закатыванием солнца.
А вот ни фига. Я вообще смутно понимаю любовь к закату солнца вручную как самоцель. Ну вот low level разработчики гоняют байты для того, чтоб было быстрее/меньше по размеру. А зачем гонять вручную s-выражения в стиле define-macro/defmacro? Зачем ручная гигиена, если она нужна в подавляющем большинстве случаев и удобнее как раз ее вручную нарушать при необходимости? Какие преимущства это дает?
Как по мне, люди, предпочитающие defmacro-style макросы просто расписываются в своей неспособности понимать/создавать абстракции (в данном случае синтаксические).
С другой стороны, как же уже хочется нормальных макросов в мейнстриме (желательно нативном). Хотя бы и с ручным закатыванием солнца.
0
Люди, предпочитающие схемовые макросы просто расписываются в непонимании принципов дизайна ЯП. Встретилась задача где необходима другая система макросов — используйте другую систему макросов, например, с гигеной по-умолчанию. (В LoL есть пример реализации) В чём проблема? Высокоуровневая система однозначно хороша только если она не прячет от разработчика никакие возможности, как Java, или схемовые макросы. Более мощным языком является не тот в котором больше абстракций из коробки, а который позволяет проще и эффективнее реализовывать новые.
0
Что то да… Не впечатлило… Я привык к такому ходу мыслей на ruby
0
Все, конечно, поняли, что Racket — это некоторый диалект Lisp… но, имхо, стоило об этом написать до ката, нет?
По сути: все уже поняли, что диалекты Lisp, ML-языки и вообще ЯФП могут быть очень выразительными в некоторых задачах.
Ну и хотелось бы до ката узнавать, что за язык/среда такой — Racket? (грубо говоря — стоит за ним в википедию идти или нет).
По сути: все уже поняли, что диалекты Lisp, ML-языки и вообще ЯФП могут быть очень выразительными в некоторых задачах.
Ну и хотелось бы до ката узнавать, что за язык/среда такой — Racket? (грубо говоря — стоит за ним в википедию идти или нет).
+1
Как-то грустно совсем… Даже сравнивать не хочется с теми решениями, что были на других языках. Явно не гольфить против perl и ruby.(golfscript не считаю интересным)
0
А как вот это ваше λ с клавиатуры набирать?
+11
В APL подобные выражения выглядят эзотеричнее:
максимум — ⌈/ 3 5 88
фильтрация — d←5 6 7 8 9 ⋄ (d>6)/d
и т.п.
максимум — ⌈/ 3 5 88
фильтрация — d←5 6 7 8 9 ⋄ (d>6)/d
и т.п.
+3
Ага, мне тоже сразу APL вспомнился после увиденной λ, ну как вспомнился, не программил конечно на нём, так книжку в детстве прочитал о нём — язык адский.
0
Обычный функциональный язык. Значки запоминаются гораздо лучше названий функций, которые зависят от пожеланий разработчика. Например максимум — max, maxof, maximum или ещё как нибудь. Да и порог вхождения у APL ооочень низкий. Мне хватило 20 рабочих дней, чтобы научиться разбирать готовый код.
0
Что-то никак, не то что на друзей, даже на меня не произвело впечатления.
Когда я вижу какие-нибудь bash или perl однострочники, вот это да думаю, впечатления, а тут нет.
Когда я вижу какие-нибудь bash или perl однострочники, вот это да думаю, впечатления, а тут нет.
+2
ну, по идее — любую программу на Lisp и подобных ему языках можно написать в одну строку.
вопрос в том что в 99% случаев не стоит этого делать
вопрос в том что в 99% случаев не стоит этого делать
0
На меня эти строчки не произвели абсолютно никакого впечатления кроме WTF относительно синтаксиса.
0
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
10 «однострочников» на Racket, которые произведут впечатление на ваших друзей