Re: [stack] Concatenative Research
Don Groves <[email protected]> Tue, 1 Feb 2011 20:20:48 -0800
| Newsgroups | gmane.comp.lang.concatenative |
|---|---|
| Message-ID | <[email protected]> |
On 1 Feb 2011, at 13:02, John Carter wrote: > On Mon, Jan 31, 2011 at 6:11 PM, Justin <[email protected]> wrote: > > > > > > > > What may be interesting and useful would be to return to typed variables > > > (named values variety) and something like a SQL "natural join". > > > > I don't know what you mean. Could you give an example? (I don't have a good > > mental model of databases.) > > > > The truely irritating thing about both stack languages, and the more > traditional languages with named parameters, is that the order of the > parameters and the names don't really matter. > > Given any program P in a stack or traditional language, you can reorder > and/or rename the parameters of every function anyway you choose... and come > up with another program that does EXACTLY the same thing, so long as you > carry through the renaming through the the body of each function and the > reordering into every invocation of the function. > > In stack languages without parameter names, your program will _look_ > radically different as there will be a flock of stack manipulation operators > different. > > ie. In a very strong sense, parameter names and parameter order is fluff and > irrelevant to the actual computation being performed! > > Thus my mathematical gut feeling is, one should be able to eliminate it > _all_ in some representation. > > I could be unconstructive an give you a lmgtfy link about natural joins, but > let me rather discard the SQLish analogy and try say what I mean in a > stackish language. > > Well, a lot of stack languages (Factor is a very good example) give the > stack effect for each function as something like... > > fn: T1, T2, T3... -> T4, T5... where I mean fn is a function that pops > parameters of type ..., T3, T2, T1 off the stack, in that order and pushes > objects of type T4, T5, .. onto the stack in that order. > Given only this, shouldn't the inner interpreter be able to perform stack shuffling between function calls automatically? -- don > > Well, lets add some names... > > fn: i1 T1, i2 T2, ...-> o4 T4, o5 T5, ... > > Where I am naming my input parameters i1, i2, ... and my output values as > o4, o5, ... > > Now a fragment of any stack language code tends to look like.... > > fn1 stackOp1 stackOp2, ... fn2 > > where all the stackOps rearrange the stack as it was left by fn1 and it's > predecessors, so as to feed fn2 correctly. > > However, it you were to look at the stack effect declarations for fn1, and > fn2, it would probably be obvious from the types alone, as which stackOps > you would need between fn1 and fn2! > > And if the types alone weren't enough to tell you, the names certainly > would! > > Thus in principle one could create a language where you could write a > fragment as fn1 fn2 and the compiler could infer what stackOps (or calling > parameters and their order) are required. > > -- > John Carter Phone : (64)(3) 358 6639 > Tait Electronics Fax : (64)(3) 359 4632 > PO Box 1645 Christchurch Email : [email protected] > New Zealand > > ======================================================================= > This email, including any attachments, is only for the intended > addressee. It is subject to copyright, is confidential and may be > the subject of legal or other privilege, none of which is waived or > lost by reason of this transmission. > If the receiver is not the intended addressee, please accept our > apologies, notify us by return, delete all copies and perform no > other act on the email. > Unfortunately, we cannot warrant that the email has not been > altered or corrupted during transmission. > ======================================================================= > > [Non-text portions of this message have been removed] > > [Non-text portions of this message have been removed] ------------------------------------ Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/concatenative/ <*> Your email settings: Individual Email | Traditional <*> To change settings online go to: http://groups.yahoo.com/group/concatenative/join (Yahoo! ID required) <*> To change settings via email: [email protected] [email protected] <*> To unsubscribe from this group, send an email to: [email protected] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/