- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
define method display (i :: <integer>)
do-display-integer(i);
end;
define method display (s :: <string>)
do-display-string(s);
end;
define method display (f :: <float>)
do-display-float(f);
end;
define method display (c :: <collection>)
for (item in c)
display(item); // runtime dispatch
end;
end;
Когда обсуждали новые высеры яблочников: обжоптив и свифт.
https://govnokod.ru/19976#comment326417
https://govnokod.ru/12964#comment176395
wvxvw его очень котировал.
Судя по воспоминаниям очевидцев было очень много расстройства когда жизненно важные контракты были безвозвратно перенесены на Си. Чуть ли не на столько, что "уходили в монастырь" - ну, в смысле, люди бросали программирование, и начинали заниматься либо администраторской работой, либо грядки возле дома окапывать.
Я, так случайно получилось, знаю человека, который учавствовал в разработке и последующем отказе от Дилана. С его слов - очень мало кто после этого проекта продолжил работать в той же области. Кстати, он сына Диланом назвал.
В смысле, переход на Си был для многих трагедией всей жизни, т.как иначе как недоразумением они это даже назвать не могли.
2. Многие лисперы, даже те, кто пишут на CL считают Схему более рафинированым и продуманным языком, и эта "универсальность" видится как положительная черта. Почему так в CL / e-lisp'e? - хз, скорее всего так удобнее было когда-то реализовать парсер. Стандарт очень щепетильно описывает как должен работать парсер, поэтому в CL особо вариаций на эту тему и не было.
Дилан, на сколько я понимаю, тоже Лисп-1.
Лисп - не функциональный язык, и вообще не язык, Лисп может относится к двум понятиям:
1. Способ записи (аналогично, как Фортрано-подобные языки все похожи друг на друга способом записи).
2. Наличием встроенного в рантайм компилятора / интерпретатора языка. С этой точки зрения, например Питон или Руби - тоже лиспы.
Не все лиспы исторически обладали "лисповым" синтаксисом, у Дилана - фортрановский синтаксис.
Половина лиспов использующихся сегодня - не функциональные языки, (функциональные, или по крайней мере близкие - Схема, Ракет, Кложур). В Эмакс Лиспе до последней редакции не было даже возможности создавать замыкания.
Большинство современных лиспов не выполняют код один-в-один с деревом представленным его исходником. Есть много оптимизирующих компиляторов, которые расценивают этот код, как промежуточное звено.
Смысл использовать Лисп в том, что с помощью инструментов языка можно очень легко строить языковые расширения. Например, чтобы в Яве автоматически создать сеттер и геттер для поля класса нужно написать / импортировать lombok аннотации, и после чего это все равно будет выглядеть уродски, не говоря уже про более сложные структуры, где это иногда будет выглядеть либо очень громоздко, либо вообще невозможно. (Попробуйте добавить в Яве другую разновидность форича, которая перебирает сразу несколько коллекций).
...
Этим и прекрасен.
Уникальный сплав "лиспа", и привычного многим типизированного императивного синтаксиса.
Один из немногих языков, от самого синтаксиса которых ловишь кайф.
Жаль что Apple не стали его двигать. Языку трудно взлететь без нужной инфраструктуры и поддержки подобного монстра.
То ли дело Forth.
В Свифте, на мой взгляд, чувствуется некоторое влияние Дилана.
https://ru.wikipedia.org/wiki/JavaScript
> Первоначально язык назывался Mocha
ГК и xyz?
Мне дико доставляет этот чудной сплав бейсика и лиспа.
А с тех пор как они в 2010 завезли типизацию и автовывод типов (привет typescript!), dylan стал вполне современным.
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.627.5175&rep=rep1&type=pdf
Во-первых это структурирование а-ля ада или бейсик.
При этом можно почти в любом месте языка можно доблять опциональную синтаксическую соль.
То есть можно писать максимально кратко и распиздяйски:
В случае больших вложений мы можем дополнительно указывать end какого блока.
Это проверяется компилятором, и в случае проёба end или неудачного рефакторинга, мы сразу увидим ошибку.
Но и это ещё не всё. Для ОЧЕНЬ длинных методов можно пойти дальше и писать
>> For installation, double-click on the installer, and follow instructions. You need to have either the PellesC linker or the linker of VC++ 6.0, 7.0 or the current .NET platform SDK installed. PellesC 8.00 is the best option. (Note that PellesC 9.00 does not work.)
И тут мы приходим к тому, о чём я уже говорил.