Könnte mir jemand sagen, wie die folgende Funktion in ATS implementieren:Wie wird aus einem Integer ein Double in ATS gemacht?
fun int2double (x: int): double
Dank!
Könnte mir jemand sagen, wie die folgende Funktion in ATS implementieren:Wie wird aus einem Integer ein Double in ATS gemacht?
fun int2double (x: int): double
Dank!
Es hängt von der Zielsprache ab, zu der Sie kompilieren möchten.
Wenn Sie C kompilieren, können Sie einfach tun:
staload
UN = "prelude/SATS/unsafe.sats"
fun int2double(x: int): double = $UN.cast(x)
Wenn Sie JavaScript kompilieren, dann ist int2double bereits definiert.
Ich denke, sobald Sie die folgende bessere Weise ist ...
fun int2double(x: int): double = $UN.cast{double}(x)
Gibt es eine Möglichkeit, die vorherigen zwei Kommentare zu löschen? –
Sie können dies tun, indem Sie auf die Schaltfläche "Diesen Kommentar löschen" klicken, die angezeigt wird, wenn Sie auf den Kommentar klicken. –
Ich sehe nichts, was gerade schwebt; vielleicht habe ich das Privileg noch nicht verdient :) –
Wenn Sie in C-Code sind kompilieren, dann werden Sie in etwa wie folgt verwenden:
fun int2double(x:int): double = g0int2float_int_double (x)
ist eine eingebaute Funktion (siehe $ATSHOME/prelude/SATS/float.sats
für Details).
Im Allgemeinen kann man einfach das verwenden, was in der Zielsprache verfügbar ist, um die benötigte Funktion zu implementieren. Zum Beispiel, sagen Sie die folgende Funktion in C:
double int2double_in_c(int x) { return (double)x; }
Dann können Sie die folgenden ein in ATS erklären:
fun int2double(x: int): double = "mac#int2double_in_c"
Für jeden Aufruf in ATS int2double erzeugt der Compiler einen Aufruf int2double_in_c im generierten Code. Dasselbe gilt, wenn Sie nach JS, Python, PHP usw. kompilieren wollen.
Ich teste Stackoverflow. –