[Swift-user] two questions about Swift

wilde at mcs.anl.gov wilde at mcs.anl.gov
Tue Feb 16 11:12:14 CST 2010


Yi, sorry - I missed these questions from you; just saw them now.

----- "Yi Zhu" <yizhu at cs.uchicago.edu> wrote:

> Hi all
> 
> I have two questions about swift:
> 
> 1. conventional loop:  In swift, we can use foreach to parallel apps,
> 
> but what If I just need a conventional loop, like a regular "for" or 
> "while" in java?

No, thats somewhat limited at the moment. We can consider this for future revisions. There were a variety of differing views on what control statements Swift should offer.

> 
> 2.  In Matlab, there are some library which support some Math
> functions 
> like "sin" "cos" "reshape" etc. Is there any similar library available
> 
> for swift. If not, is there anyway to import external library? (e.g. 
> from Java)

I have experimented with techniques for building a library of useful functions by using simple app() functions that do their work using a variety of shell commands and scripts.

Pasted below is one of my experiments; Im not sure if all the functions in it work, but it should serve as a guide for *one* way of doing this.

At the same time, a guide for extending the set of built-in primitives would be useful as well, as these can bend the data typing rules in useful ways, whereas the app() approach to building lib functions can not (so you often wind up with a lot fo explicit "casting" functions to e.g. jump between numbers and strings).

- Mike

---

login1$ cat stringlib.swift

type file;

// Lib functions

app (file o) echoi (int i)     { echo i stdout=@o;}
app (file o) echof (float f)   { echo f stdout=@o;}
app (file o) echob (boolean b) { echo b stdout=@o;}
app (file o) echos (string s)  { echo s stdout=@o;}

(string s) itostr (int i)
{
  file f;
  f = echoi(i);
  s = readData(f);
}

(string s) ftostr (float n)
{
  file f;
  f = echof(n);
  s = readData(f);
}

(float n) strtof (string s)
{
  file f;
  f = echos(s);
  n = readData(f);
}

app (file o) sprintfsApp (string fmt, string e[])
{
  sprintfs fmt e stdout=@o;
}

(string s) sprintfs (string fmt, string e[])
{
  file f;
  f = sprintfsApp(fmt,e);
  s = readData(f);
}


// Tests

test_sprintf() 
{
  string s0 = sprintfs("%.10d",["123"]);

  trace(s0);

  string s1 = sprintfs("input/protein.%s.%.10d",["T1ubq",itostr(123)]);

  trace(s1);

  string s2 = sprintfs("n=%.4e",[ftostr(3.34e06)]);

  trace(s2);
}

test_converters()
{
  float f = strtof("123.456");
  trace("strtof(123.456)", f);
}

test_converters();
login1$ swift stringlib.swift
Swift svn swift-r3202 cog-r2683

RunID: 20100216-1108-mg4uz0v7
Progress:
SwiftScript trace: strtof(123.456), 123.456
Final status:  Finished successfully:1
login1$ 
 


> 
> Many Thanks.
> 
> 
> -Yi
> 
> 
> _______________________________________________
> Swift-user mailing list
> Swift-user at ci.uchicago.edu
> http://mail.ci.uchicago.edu/mailman/listinfo/swift-user



More information about the Swift-user mailing list