Как стать автором
Обновить

Комментарии 38

Чего? Друзья такого не поймут! Хоть это и не однострочник, но вот это их удивит точно 99-bottles-of-beer.net/language-perl-737.html

А вот этот пожалуй способен разозлить.
cat "test... test... test..." | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'

А то что привели Вы…
Почему без sudo?
Патч Бармина?
Уже давным давно любой непонятный код на перле по умолчанию считается именно им.
а на перле можно написать понятный код?
Не вижу ничего очень крутого. То что реально коротко — просто функции из стандартной библиотеки, а то что немного подлиннее на том же 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. Никакого особенно «впечатления» не производит
> изящная макросистема

И бесполезная. Последний раз провозившись с ней два часа, сделал (require mzlib/defmacro) и написал макрос за десять минут.

Зато изящная, да. Схема вообще изящная.
> И бесполезная
А вот ни фига. Я вообще смутно понимаю любовь к закату солнца вручную как самоцель. Ну вот low level разработчики гоняют байты для того, чтоб было быстрее/меньше по размеру. А зачем гонять вручную s-выражения в стиле define-macro/defmacro? Зачем ручная гигиена, если она нужна в подавляющем большинстве случаев и удобнее как раз ее вручную нарушать при необходимости? Какие преимущства это дает?

Как по мне, люди, предпочитающие defmacro-style макросы просто расписываются в своей неспособности понимать/создавать абстракции (в данном случае синтаксические).

С другой стороны, как же уже хочется нормальных макросов в мейнстриме (желательно нативном). Хотя бы и с ручным закатыванием солнца.
Люди, предпочитающие схемовые макросы просто расписываются в непонимании принципов дизайна ЯП. Встретилась задача где необходима другая система макросов — используйте другую систему макросов, например, с гигеной по-умолчанию. (В LoL есть пример реализации) В чём проблема? Высокоуровневая система однозначно хороша только если она не прячет от разработчика никакие возможности, как Java, или схемовые макросы. Более мощным языком является не тот в котором больше абстракций из коробки, а который позволяет проще и эффективнее реализовывать новые.
Что то да… Не впечатлило… Я привык к такому ходу мыслей на ruby
Все, конечно, поняли, что Racket — это некоторый диалект Lisp… но, имхо, стоило об этом написать до ката, нет?
По сути: все уже поняли, что диалекты Lisp, ML-языки и вообще ЯФП могут быть очень выразительными в некоторых задачах.

Ну и хотелось бы до ката узнавать, что за язык/среда такой — Racket? (грубо говоря — стоит за ним в википедию идти или нет).
Как-то грустно совсем… Даже сравнивать не хочется с теми решениями, что были на других языках. Явно не гольфить против perl и ruby.(golfscript не считаю интересным)
А как вот это ваше λ с клавиатуры набирать?
Обычно так «\»
А лучше λ или ALT+NUM(0+9+5+5).
Ну… это только в виндоус будет работать.
Можно набирать lambda. Если редактор поддерживает юникод, то можно на хоткей повесить. Я исходники редактирую из под DrRacket, в нём этот хоткей определён изначально: ctrl + \
В APL подобные выражения выглядят эзотеричнее:

максимум — ⌈/ 3 5 88
фильтрация — d←5 6 7 8 9 ⋄ (d>6)/d
и т.п.
Ага, мне тоже сразу APL вспомнился после увиденной λ, ну как вспомнился, не программил конечно на нём, так книжку в детстве прочитал о нём — язык адский.
Обычный функциональный язык. Значки запоминаются гораздо лучше названий функций, которые зависят от пожеланий разработчика. Например максимум — max, maxof, maximum или ещё как нибудь. Да и порог вхождения у APL ооочень низкий. Мне хватило 20 рабочих дней, чтобы научиться разбирать готовый код.
> порог вхождения у APL ооочень низкий.

> Мне хватило 20 рабочих дней, чтобы научиться разбирать готовый код.

взаимоисключающие параграфы детектед.
реквестирую пояснения. Сколько нужно дней, чтобы изучить, например, пайтон в объеме, достаточном для поддержки/разработки крупного проекта?
Erlang — 2 недели. Максимум. Если есть готовая инфраструктура и не надо принимать архитектурные решения самому.
Разница всего в 2 раза. Поэтому буду продолжать считать, что у APL низкий порог вхождения.
Что-то никак, не то что на друзей, даже на меня не произвело впечатления.
Когда я вижу какие-нибудь bash или perl однострочники, вот это да думаю, впечатления, а тут нет.
ну, по идее — любую программу на Lisp и подобных ему языках можно написать в одну строку.
вопрос в том что в 99% случаев не стоит этого делать
На С и еще многих языках тоже можно написать в одну строку.
Хех, вспомнилась цитата с башорга про установку генту тремя строчками.
На меня эти строчки не произвели абсолютно никакого впечатления кроме WTF относительно синтаксиса.
На меня эти строчки не произвели вообще никакого впечатления. А вот строчки на Scala и Python (были раньше) — WTF синтаксис.
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории