MiniZinc поддерживает три основных типа, {int, float, bool }
. Документация использует $T
в качестве заполнителя для любого типа, содержащегося в этом наборе, так что нет необходимости предоставлять три версии сигнатуры каждой функции, по одной для каждого базового типа.
Я полагаю, что этостиль синтаксиса вдохновлен shell
, где нотация $T
используется для разыменования имени T
и обычно выдает значение, соответствующее такому имени / месту в памяти.
Можно также думать как$T
в качестве шаблона typename/class
на языке C++
, который достигает точно такой же цели.
// MiniZinc Docs
set of $U: array_union(array[$T] of set of $U)
// C++-like style
template <class T, class U>
set<U> array_union(map< T, set<U> >);