Что означает g0ofg1?

Я часто вижу код, похожий на следующую строку в ATS:

val xs = g0ofg1(xs)

Функция g0ofg1 выглядит как некий кастинг. Что он на самом деле делает?


ats
person Community    schedule 19.10.2016    source источник


Ответы (1)


Это перегруженный символ.

В ATS есть много типов, для которых существуют индексированные и неиндексированные варианты.

  • Например, существуют int(i) (для некоторых i сорта int) и int. Оба типа предназначены для целых чисел, но первый индексируется сортировкой int.
  • Другой пример: string (просто строка) и string(n) (строка с индексом длины)

g0ofg1 предназначен для преобразования индексированного типа в неиндексированный. Это castfn, поэтому с этой операцией не связаны затраты времени выполнения.

g1ofg0 предназначен для перехода в другом направлении: от неиндексированного к индексированному типу.

person Artyom Shalkhakov    schedule 19.10.2016