>>/1332/
Спасибо, удача это хорошо, ещё бы воли и было бы прекрасно.
Сейчас Laisi версии 0.7, следующая скорее всего будет 0.7.1 и туда я добавлю новое слово для препроцессинга. @for. Например, есть функция repr, которая в ОП-пике, на самом деле это не функция, а темплейт. Темплейт это препроцессинговая штучка для callable объекта, при вызове его внутри кода, генерируется объект (функция в частности) в зависимости от типов пересылаемых аргументов. В версии 0.7 нельзя сделать так, чтобы темплейт орудовал переменным количеством аргументов, но с @for можно будет. Например:
@template func (text,[... data,codec := DEFAULT_CODEC.decode,int base := 10]) repr := {
@for N in data
@iftype N is int
#TODO
@end
};
Мой ЯП статичски типизован и не поддерживает изменение/получения типа во время исполнения, но во время компиляции. Полиморфизм в метапрограммировании.
Я всё время слышал про ООП и не понимал его. Когда я осознал, что 3 основные вещи в ООП это полиморфизм, инкапсуляция и наследование, я был разочарованно удивлён. Может быть я чего-то не понял, но "Полиморфизм, инкапсуляция, наследование" звучит как "секс, наркотики, рок-н-ролл". Если секс и наркотики можно связать, то рок-н-ролл is out of topic. Так же в ООПной строке. При чём тут полиморфизм? Ладно инкапсуляция и наследование, это увязывается, но полиморфизм? Когда-то я хотел в свой ЯП добавить возможность получения и изменения типа переменной во время исполнения, но понял, что это очень сложно для компиляции и не подходит для моего низкоуровневого ЯП.