Может кто-нибудь сказать мне, как реализовать следующую функцию в ОВД:Как превратить целое число в двойной в ATS?
fun int2double (x: int): double
Спасибо!
Может кто-нибудь сказать мне, как реализовать следующую функцию в ОВД:Как превратить целое число в двойной в ATS?
fun int2double (x: int): double
Спасибо!
Это зависит от того, на каком языке вы хотите скомпилировать.
Если вы компилируете C, вы можете просто сделать:
staload
UN = "prelude/SATS/unsafe.sats"
fun int2double(x: int): double = $UN.cast(x)
Если вы компилировать в JavaScript, то int2double уже определен.
Я думаю, что вы когда-то сказал следующее лучше образом ...
fun int2double(x: int): double = $UN.cast{double}(x)
Есть ли способ удалить предыдущие два комментария? –
Вы должны сделать это, нажав кнопку «Удалить этот комментарий», которая появляется при зависании комментария. –
Я сейчас не вижу ничего парящего; возможно, я еще не заслужил эту привилегию :) –
Если вы собираете в код C, то вам придется использовать что-то вроде следующего:
fun int2double(x:int): double = g0int2float_int_double (x)
, который является встроенной функцией (см. $ATSHOME/prelude/SATS/float.sats
).
В общем, можно использовать все, что доступно на целевом языке, для реализации необходимой функции. Например, у вас есть следующие функции в C:
double int2double_in_c(int x) { return (double)x; }
Тогда вы можете объявить следующий один в ОВД:
fun int2double(x: int): double = "mac#int2double_in_c"
Для каждого вызова int2double в АТС, компилятор генерирует вызов int2double_in_c в сгенерированном коде. То же самое происходит, если вы хотите скомпилировать JS, Python, PHP и т. Д.
Я тестирую stackoverflow. –