- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 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, и погуглил аут оф зе кьюриосити
Фублядь, фунахуй. Ещё проприетарной скриптушни не хватало.
я еще такое говно видал: http://www.mivascript.com/topic/introduction.html
Euphoria
https://openeuphoria.org/
http://www.rapideuphoria.com/
https://github.com/EuphoriaLanguages/Friendly_Flexible_Fast/raw/OpenEuphoria/euphoria-4.1.0-x64.exe
Windows 32-bit
https://github.com/EuphoriaLanguages/Friendly_Flexible_Fast/raw/OpenEuphoria/euphoria-4.1.0-x86.exe
Linux 32-bit
сиречь, современные прыщи не поддржваюца?
>All data objects in Euphoria are either atoms or sequences. An atom is a single numeric value. A sequence is a collection of objects
оо, скаляры и коллекции, няшно
>The Euphoria interpreter usually stores integer-valued atoms as machine integers (four bytes) t
привет из 2020
>'=' is treated as an operator, just like '+', '*' etc., so it is applied to corresponding sequence elements
When they are not equal length, the result is an error. Either way you'll get an error, since an if-condition must be an atom, not a sequence. Instead you should use the equal() built-in routine:
фуу
>sequence seq_1 = { 10, 20, 30, $ }
ого, надо статически тип указывать
>https://sourceforge.net/projects/euvide/
даже так, воу
>https://github.com/vim/vim/blob/master/runtime/syntax/euphoria4.vim
~$ eui
Euphoria Interpreter v4.1.0 development
64-bit Linux, Using System Memory
Revision Date: 2015-02-02 14:18:53, Id: 5861:57179171dbed
ERROR: Must specify the file to be interpreted on the command line
вот я и в хопре
все, я поехал
is an expression that adds the sequence {1,2,3} and the atom 5 to get the resulting sequence {6,7,8}.
охунно!!
Строки это последовательность в кодировке ascii.
если второй операнд тоже сиквенс, но происходит почленное сложение.
по этой же причине нельзя сравнивать строки через = : сравниваться будут отдельные члены сиквсенса, и если строки будут разной длины -- будет ошибка
а вот это уже серьезно
https://openeuphoria.org/docs/lang_decl.html#_123_userdefinedtypes
понимаете, что произошло? кастомный тип свалидировался. ХЗ как такое сделать без объектов в других япах
кстати, джаваскриптеры, сосать!!
Calculations using variables declared as integer will usually be somewhat faster than calculations involving variables declared as atom. If your machine has floating-point hardware, Euphoria will use it to manipulate atoms that are not integers.
When comparing the speed of Euphoria programs against programs written in other languages, you should specify without type_check at the top of the file. This gives Euphoria permission to skip run-time type checks, thereby saving some execution time. All other checks are still performed, e.g. subscript checking, uninitialized variable checking etc. Even when you turn off type checking, Euphoria reserves the right to make checks at strategic places, since this can actually allow it to run your program faster in many cases. So you may still get a type check failure even when you have turned off type checking. Whether type checking is on or off, you will never get a machine-level exception.
остальные скриптобляди так не могут
вот бы их еще в компайлтайме считать
Вот, к примеру, оче полезный сервер:
Если функция возвращает атом, то там код ошибки. А иначе там сиквенс, например.
т прнс?
В «Паскале» тоже есть проверка (отключаемая, кстати), но она более скучная: там можно проверить только на вхождение в диапазон. Например, так:
но тут понадобица аналог constexpr, а так можно далеко зайти
https://learn.adacore.com/courses/intro-to-ada/chapters/contracts.html
https://govnokod.ru/25987#comment513000
Атрибут 'Last (длина строки) в языке Ада вполне может вычисляться в компайлтайме, поэтому проверить, что длина константы типа MoyaStroka лежит в диапазоне 10..64, можно уже на этапе компиляции.
> без объектов
Чем объекты плохи и чем «type» не объект?
ах да, преобразования типов тоже в жабах и скриптоговнах нет, так что было бы еще вербознее
ты не заметил, что констрейнты на типы в универсальных ЯВУ особо никому не понадобились? надо логику наебенить - значит, оборачиваешь в класс и делаешь проверки в конструкторах, не так и много писать
а в эйфории можно сделать констрейнт форин кей он апдейт каскад деферред? может, там есть мультиметоды?
странно выпячивать подобные киллер-фичи, когда они объективно ненужно
Ну вот выше гост показал, что писать много. Кроме того класс во многих языках это оверхед.
А тут у нас обычный int под капотом, просто проверяется при обращении..
>он апдейт
у нее есть встроенная база данных, лол
http://www.rapideuphoria.com/database.htm
может быть что-то и есть, я еще не смотрел
В «Фортране» были неявные циклы (например, у оператора PRINT) и передача вектора в функцию, ожидающую скалярного аргумента (которая тоже разворачивалась в цикл). Но в «Фортране» всё это было в зачаточном состоянии. Вот так вот в произвольном выражении использовать это было нельзя.
возможно что идею эту эйфория подрезала у Фортрана, да
Поставь её, давай изучать?) Прикинь: скриптушня, очень замороченная на типизации. Чем-то похожа на паскаль, и с проверкой типов в рантаймте.
кстати,
Can be translated to ANSI C and the compiled
впрочем, я его в первый раз увидел в середине нулевых и не удивился бы, если бы он помер уже тогда 🙂
Жоп, кмк, три:
* строки это числа, юникода нету
* документация весьма скудна, и расчитана на бульмень скиллового питуха. Стандартная либа вообще не имеет туториалов, а только лишь референс
* его никто не форсит.
для чего-то сложного он видимо слишком "низкоуровневый": писать серьёзные вещи с run'n'crash удовольствия немного
даже такой экзотике как REBOL/Red проигрывает: там есть гомоиконность и окошки вроде прямо из коробки
А тут у тебя она из коробки, да еще и с проверкой.
Низкоуровневость конечно скорее минус для скриптушни (правда положительно сказывающийся на пирформансе), но наверняка можно напилить высокоуровневые либы.
У меня стойкое ощущение от эйфории, что как это как если бы из паскаля сделали скриптушню.
Я бы заменил в некоторых курсах по основам программирования питон на эйфорию, все таки со своими типами она более консистентна
почему sequence, а не seq? почему integer, а не int?
почему в питоне "lambda"
впрочем, я согласен: некотоыре буквы тут лишние
[] () -> {}
Чтобы зарезервированным словом lambda не портить жизнь математикам.
сразу видно, что энтерпрайз
заметь, что функция не есть процедура
- не знаю, почему, но глаз от такого дёргается
https://openeuphoria.org/docs/std_machine.html#_5796_routine_id
всё логично и правильно.
For what? An error handler exists in some programming languages as a "safety net" or for an "instant solution" for hardware or software failures. In reality an error handler is a very poor approach for dealing with bugs, and of course - Euphoria 3 rightfully avoids this unnecessary feature.
МОИ МОЗГИ!
https://www.rapideuphoria311.com/#beyond
всегда сразу писать код без багов?
* любые ошибки в программе это всегда пиздец и падение. Если ты обратился к несуществущему элементу сиквенса -- твоя программа упала. Всё. Ты лох. Не нужно так делать.
* Если тебе нужно вернуть НЕ рантайм ошибку (то есть ошибку не в программе, а в чем-то внешнем) то возвращай код ошибки
не, ну свои ништяки в язычке конечно есть. но кое-что я бы подшлифовал
Все эти ваши исключения в скриптушне это сплошной багор: никогда не понять что где ловить, а уж про собачки в пыхе я промолчу)
Может, встретимся? Где живёшь?
https://openeuphoria.org/docs/std_sequence.html#_2591_apply
I use. I'm not a programmer and I don't have time for the nonsense of other programming languages... that's why
не, ну таким людям эррор хендлеры не нужны, они сами как эррор хендлер
У меня опен, а не рапид
Я скачал какой-то sh скрипт с опенефории, и он скачал мне четвертую эйфорию
В третьей небыло enumов как я понял, это похо
Дай угадаю, поддержка XP закончилась на 3.1.0 версии?)
Не смотря на всю плюшевость, язык затрагивает серьезные темы:
Кооперативную многозадачность, функциональное программирование, битовую арифметику, статическую типизацию, API операционных систем, модульность, статическую линковку, циклы с retry и continue, switch с fallthru, профилирование, трейсниг, дебаг, препроцессинг, компайл-тайп выражения и косвенные вызовы функций.
Отлично подходит для обучения программированию. Пара тупых примеров:
https://openeuphoria.org/docs/
- дай угадаю: работает только на раскладке белых людей
Я врублю русскую раскладку и запущу пример, не случится ли SOSNOOLI?
К тому, что для обучения молодых макак программу надо переписать чуток
А зачем переписать? код именно такой, как пишут школьники: всё максимально тупо и в лоб
Вообще язык довольно прямой, без выебонов
Я думаю, даже трупопаскаль умел такое
https://openeuphoria.org/docs/std_cmdline.html#_840_command_line
У нас в эйфории всё есть!)
ну и на волне интереса к похожей скриптушне узнал про Эйфорию
примерно в то же время кстати прочитал и про https://www2.cs.arizona.edu/icon/intro.htm, его по мелочи тут уже обсуждали, впрочем, и это не скриптушня
Руби мне нравится (я вообще в каждом языке вижу что-то хорошее, кроме ПХП разумеется), но про Эйфорию я не слышал до вчерашней ночи.
Жаль конечно, что он никому нахуй не нужен кроме трех питухов на форуме опенэйфории. Дело, как всегда, в отсутствии киллер фреймворка и пиара
могу нырнуть в айкон в следующие выхи, если ничто не отвлечет
Может, прямо здесь и поебётесь?
https://ok.ru/video/1862574082652
https://tools.ietf.org/id/draft-ietf-dcrup-dkim-crypto-11.html