Я разрабатываю язык программирования, и одна функция, которую я хотел бы добавить, - это перекресток между trampoline function и class
. То есть, класс, который принимает буквальный, похожий на generic class
, принимающий в . Я застрял на имени для них, потому что раньше я не встречался с ними на языке, есть ли что-то, что уже означает эту концепцию или что-то близкое? Использование trampoline class
является опцией, но если есть что-то, что более точно описывает это или уже используется на другом языке, я бы предпочел пойти с ним, чтобы сократить количество жаргона, требуемого в документации.Есть ли название для батут-класса?
Псевдо-код следует проиллюстрировать этот принцип в случае, если это не ясно из сказанного выше:
class Point<const int n> {
private float[n] _value;
Point() {
for (int i = 0; i < n; i++) {
this._value[i] = 0f;
}
}
Point(Point<o> other) {
for (int i = 0; i < min(n, o); i++) {
this._value[i] = 0f;
}
}
public static float operator [index] (optional float value = null) {
if (value != null) { this._value[index] = value; }
return (this._value[index]);
}
public static Point<max(o, p)> operator + (Point<const int o> p1, Point<const int p> p2) {
Point<min(o, p)> small = (p1.n < p2.n ? p1 : p2);
Point<min(o, p)> large = (p1.n < p2.n ? p2 : p1);
Point<max(o, p)> ret = new Point<max(o, p)>(large);
for (int i = 0; i < min(o, p); i++) { ret[i] += small[i] }
return (ret);
}
}
Спасибо, но я думаю, что, может быть, у меня были смешанные вещи, сопоставляя «функции батута», которые похожи на концепцию уровня реализации, но на самом деле не теоретически, - или используя max (o, p) 'в псевдокоде. На самом деле динамический бит, допускающий 'max (o, p)', отличается от функции, о которой я думаю здесь. Я ищу способ передать буквальное или вычисленное значение (вычисленное значение можно рассматривать как литерал внутри этого языка в этом контексте) в качестве общего параметра, который не является типом, но сам набирается (например, int.) Активировано для информации. – CoryG
Вы можете уточнить свой вопрос? Я в основном догадывался, что вы спрашиваете, глядя на свой код. Может быть, вы можете представить пример кода, который содержит только концепцию, которую вы ищете, и никакой другой необычной концепции? Кроме того, пожалуйста, добавьте более подробное описание функции, которую вы ищете, поэтому нам не нужно так много догадываться. Затем, пожалуйста, укажите, как концепция отличается от зависимых типов. Для меня описание из вашего комментария выше похоже на зависимые типы. –
Вопрос заключается в имени общего класса, который позволяет использовать литералы вместо типов в общем определении. Зависимый тип - это тип, который зависит от другого типа или имеет значение, которое каким-то образом ограничено им. Название вещи, описанной в этом случае, не обязательно будет содержать какие-либо общие типы (буквально такие, как 1, 2, 3, «a», «b» или «c», будут эффективно передаваться при компиляции как локальная константа внутри класса.) – CoryG