Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!uflorida!gatech!hubcap!budd From: budd@mist.cs.orst.edu (Tim Budd) Newsgroups: comp.parallel Subject: eval() in Linda Keywords: linda parallel Message-ID: <4282@hubcap.UUCP> Date: 1 Feb 89 18:31:45 GMT Sender: fpst@hubcap.UUCP Lines: 48 Approved: parallel@hubcap.clemson.edu [ Is there a newsgroup specifically devoted to discussion of linda? ] { not that I know of....steve } In implementing Linda, one of the more difficult problems would seem to be the correct handling of eval(). I'm particularly curious as to how eval() is done in systems such as Leichter's VAX/VMS ethernet implementation, where it is not possible to simply fork off a child of the process on one machine and expect that it will take up residence on a different machine. Do they just punt and not implement eval? I've never been exactly certain of the exact semantics of eval, either. Here are two questions: 1. Can an eval'ing process in() it's own tuple? does this have any effect on the executing computation? That is, can I do something like eval("foo", bar()); where bar is bar() { ... do some stuff .... in("foo", x); ... do some more stuff ... } will all the stuff be performed? 2. When using typed fields, is it the case (as one would expect) that the type of a running process produced by an eval is different from the type of the result produced when that process completes? That is, if I do something like eval("foo", bar()); in("foo", x:integer); where bar is int bar() { .. do some stuff .. return 17; } the in() should hang until bar is finished, since prior to that point the type of the second argument in the typle is a process. Is my understanding correct? --tim budd (still waiting to gain access to an actual linda system) budd@cs.orst.edu