Pull to refresh
-9
0
Алексей Борисенко @Lex20

Программист

Send message
Не вижу проблемы.
Задам операторы для стандартных типов.
Предусмотрено сравнение числа и строки.
А что делать, если вызовов нет?

В этом случае функция не нужна.
И опять, это означает, что вы не выводите тип параметра по употреблению (хотя это возможно), а на этот раз требуете этой аннотации от программиста (и чем это отличается от явной типизации?).

Предполагалось задавать порядок следования элементов в структуре, хотя может вы и правы.
… а как вы определяете, каких типов x и y? Опять подстановкой при вызове?

Их типы задаются при первой инициализации структуры.
fun f (a, b) = a > b

При таком вызове функции:
f(1, 'string')

a-числовой, b-строковый тип. Если для таких a и b определён оператор >, то возвращаемое значение функции a будет того же типа, что и возвращаемое значение оператора >.
fun f (a, b) = if a > b then a.x else b.y

Здесь ошибка, поскольку в аргументах не обозначено, что переменная a включает в себя переменную x, b, соответственно, y.
Если было бы обозначено, и функция возвращала значения разных типов(типы переменных x и y), то была бы ошибка компиляции.
Аргументы выводятся при каждом вызове функции. Тип возвращаемого значения выводится в теле самой функции. Если возвращаемых значений 2 и более — ошибка компиляции.
auto можно вообще не писать, об этом статья.
И почему же в массив не вложены другие типы?

В простом массиве все данные одного типа.
В гетерогенный вложены.
И да, как вы, собственно, собираетесь выводить тип аргументов функции?

Тип выводиться в теле функции.
Если функция foo работает только с такими аргументами, то
foo(int_x, string_y, file_z) { }
Имел ввиду ANSI С

Information

Rating
Does not participate
Location
Горки, Могилевская обл., Беларусь
Date of birth
Registered
Activity