- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
// Define type
define bottles_of_beer => type {
// Define internal data
data private bottles = 99
// Define private methods
private br => '<br/>'
private s => .bottles != 1 ? 's' | ''
// Generate lyrics when object represented as a string
public asstring => {
local(out = '')
// Use Lasso query syntax to generate the lyrics
with n in 99 to 1 by -1 do {
.bottles = #n
#out += .bottles + ' bottle' + .s + ' of beer on the wall, ' + .br
#out += .bottles + ' bottle' + .s + ' of beer; ' + .br
.bottles--
#out += 'Take one down, pass it around, ' + .br
#out += .bottles + ' bottle' + .s + ' of beer on the wall. ' + (.br * 2)
}
// Return result
return #out
}
}
bottles_of_beer
Там есть его история в вики
Я просто случайно в одной книжке прочитал урл типа http://хуемое/index.lasso, и погуглил аут оф зе кьюриосити
Фублядь, фунахуй. Ещё проприетарной скриптушни не хватало.
Euphoria
https://openeuphoria.org/
http://www.rapideuphoria.com/
В «Паскале» тоже есть проверка (отключаемая, кстати), но она более скучная: там можно проверить только на вхождение в диапазон. Например, так:
https://learn.adacore.com/courses/intro-to-ada/chapters/contracts.html
https://govnokod.ru/25987#comment513000
Атрибут 'Last (длина строки) в языке Ада вполне может вычисляться в компайлтайме, поэтому проверить, что длина константы типа MoyaStroka лежит в диапазоне 10..64, можно уже на этапе компиляции.
> без объектов
Чем объекты плохи и чем «type» не объект?
ты не заметил, что констрейнты на типы в универсальных ЯВУ особо никому не понадобились? надо логику наебенить - значит, оборачиваешь в класс и делаешь проверки в конструкторах, не так и много писать
а в эйфории можно сделать констрейнт форин кей он апдейт каскад деферред? может, там есть мультиметоды?
странно выпячивать подобные киллер-фичи, когда они объективно ненужно
В «Фортране» были неявные циклы (например, у оператора PRINT) и передача вектора в функцию, ожидающую скалярного аргумента (которая тоже разворачивалась в цикл). Но в «Фортране» всё это было в зачаточном состоянии. Вот так вот в произвольном выражении использовать это было нельзя.
кстати,
Can be translated to ANSI C and the compiled
впрочем, я его в первый раз увидел в середине нулевых и не удивился бы, если бы он помер уже тогда :)
для чего-то сложного он видимо слишком "низкоуровневый": писать серьёзные вещи с run'n'crash удовольствия немного
даже такой экзотике как REBOL/Red проигрывает: там есть гомоиконность и окошки вроде прямо из коробки
почему sequence, а не seq? почему integer, а не int?
[] () -> {}
Чтобы зарезервированным словом lambda не портить жизнь математикам.
сразу видно, что энтерпрайз
- не знаю, почему, но глаз от такого дёргается
всегда сразу писать код без багов?
не, ну свои ништяки в язычке конечно есть. но кое-что я бы подшлифовал
Может, встретимся? Где живёшь?
I use. I'm not a programmer and I don't have time for the nonsense of other programming languages... that's why
не, ну таким людям эррор хендлеры не нужны, они сами как эррор хендлер
Дай угадаю, поддержка XP закончилась на 3.1.0 версии?)
- дай угадаю: работает только на раскладке белых людей
Я врублю русскую раскладку и запущу пример, не случится ли SOSNOOLI?
К тому, что для обучения молодых макак программу надо переписать чуток
Я думаю, даже трупопаскаль умел такое
ну и на волне интереса к похожей скриптушне узнал про Эйфорию
примерно в то же время кстати прочитал и про https://www2.cs.arizona.edu/icon/intro.htm, его по мелочи тут уже обсуждали, впрочем, и это не скриптушня
Может, прямо здесь и поебётесь?