[Swift-devel] mapping and primitive types
Ben Clifford
benc at hawaga.org.uk
Sun Jul 8 00:56:21 CDT 2007
The runtime has the concept of 'primitive' types - these are types such as
int, float, string.
If a type is primitive, it is not staged in or out during procedure
execution. This is (I think) the only difference in behaviour.
However, this isn't implemented particularly nicely.
If I run program A below, with the output mapped like this:
messagefile outfile <"055-pass-int.out">;
then I get output in a file called 055-pass-int.out.
However, if I run program B below, which is similar but declares its
output like this:
int outfile <"056-pass-int.out">;
then the output file is not staged back, but no error is given suggesting
that it is unwise to map an integer to a file.
I see why that is in the implementation, but its not pleasing from a user
perspective.
Should it be possible to map a 'primitive' type?
If yes, then the below two programs should work.
If no, then program B should produce a sensible error message.
I think the answer should be 'yes' - there seems to be a long term desire
to be able to access mapped data in the language (for example, to run a
program to determine if an iterative process has converged, outputting a
boolean, and use that boolean as a condition in a loop).
PROGRAM A
=========
type messagefile {}
(messagefile t) greeting(string m, int i) {
app {
echo i stdout=@filename(t);
}
}
messagefile outfile <"055-pass-int.out">;
int luftballons;
luftballons = 99;
outfile = greeting("hi", luftballons);
PROGRAM B
=========
(int t) greeting(string m, int i) {
app {
echo i stdout=@filename(t);
}
}
int outfile <"056-pass-int.out">;
int luftballons;
luftballons = 99;
outfile = greeting("hi", luftballons);
--
More information about the Swift-devel
mailing list