1. Sequence index with sequences... Why not?!
- Posted by Anders Eurenius <c96aes at OXE.CS.UMU.SE> Jun 06, 1997
- 684 views
>>subscript must be an atom >>(reading an element of a sequnce) I don't get it. What horrors could possibly justify this? If I could index with a sequence, I could do all kinds of nifty things with trees and stuff like that... I was thinking of doing this: Each node: {ID,KEY,child1,child2,child3,...} where ID is a sequence containing the index to itself. !Note: ID[1..len-1]=Parent! Smooth! Key is whatever data you would like to store. Child nodes would be appended (as sequences) to the node. I'm also a bit disturbed by not being able to alter variables from a procedure or function. A (fully backwards compatible) of fixing this would be to introduce some kind of 'var' directive. That can't be that tricky, could it? /Anders P.s. this is being sent to both the list, and RDS. -------------------------------------------------------------- Anders Eurenius <c96aes at cs.umu.se> UIN:1453793 Computer Science/Engineering student at the university of Umea --------------------------------------------------------------
2. Re: Sequence index with sequences... Why not?!
- Posted by Anders Eurenius <c96aes at OXE.CS.UMU.SE> Jun 07, 1997
- 658 views
>I do not really understand your problem so I'll respond only at the >error message. If you reference a piece of a sequence you must point >to it with a number or constant that represents a number. The number >is mostly an atom/integer. You cannot reference a part of a sequence >with a part of another sequence that is not of type atom/integer. Ahh! But this is the cool part: Say you have a three-dimensional array (sequence) s, containg something, blah, blah... Now, I want s[4][5][3] and this is ok, because, (get this!) I know _how many dimensions it has_. With this knowledge I can store the indexing in another sequence ix, like this: ix={4,5,3} and just as easily get or set s[ix[1]][ix[2]][ix[3]]. Are you with me so far? *Each element in ix indexes a dimension*. So far, so cool. Okay, now for the twist: Say you have an x-dimensional sequence... ... ...But then I can't use the square brackets anymore, because I don't know how many to use... >sequence s >atom l >s = {4,3,2,1} >integer ID >ID = {'a','b','c','d'} > >l = ID[s[1]] -- so l would be 'd' Yeah, sure, so what? (Ok, my post was crummy...) >> a sequence, I could do all kinds of nifty things with trees and >> stuff like that... I was thinking of doing this: >Yes, you can but you must extract a number (atom) from the >sequence that indexes the sequence. Keyword: "Extract"; Gonna be a seriously tricky recursion... >In the RDS examplecode there is a piece of code that uses a nested >tree that counts characters look at that, maybe it helps you. Hmm... Okay... I'll search for it >> Each node: {ID,KEY,child1,child2,child3,...} >> where ID is a sequence containing the index to itself. >> !Note: ID[1..len-1]=Parent! Smooth! >> Key is whatever data you would like to store. >> Child nodes would be appended (as sequences) to the node. >> >> I'm also a bit disturbed by not being able to alter variables from a procedur e >You must return the variables of a function in a sequence. Yeah, I know, but you get really complicated recursions that way... Indexing with a sequence would be much niftier! (Not to mention faster, function calls do use some overhead...) --8<-- <some code...> -->8-- >MK /Anders BTW: For those who don't know: recursion is when a function does something, and then calls itself, until some condition is met, like this: function test(integer n) ? n if n>0 then test(n-1) end if end function -------------------------------------------------------------- Anders Eurenius <c96aes at cs.umu.se> UIN:1453793 Computer Science/Engineering student at the university of Umea --------------------------------------------------------------
3. Re: Sequence index with sequences... Why not?!
- Posted by Robert Craig <robert_craig at COMPUSERVE.COM> Jun 07, 1997
- 659 views
Anders Eurenius recently suggested that Euphoria should = allow subscripting of a sequence with a sequence. This is a = reasonable idea. I can understand his arguments in favor of this feature. = I'd like to point out that in addition to using recursion to = subscript a tree of unknown depth, you can also write a = loop that subscripts one level with each iteration. This topic was discussed a few months ago on this mailing list, = and the rest of this message is a copy of what I said back then... --------- I've received many suggestions for defining what it would mean to subscript a sequence with a sequence: 1. Jeff Zeitlin's idea (it's done like this in APL): s[{a,b,c}] is {s[a],s[b],s[c]} 2. Other people suggested: *Anders idea too* (useful for tree structures of unknown depth): s[{a,b,c}] is s[a][b][c] 3. Someone else suggested (the database people would like it): s["Fred"] is the Euphoria object associated with "Fred" e.g. s["Fred"] =3D 99 s["Dave"] =3D 27 s["George"] =3D {1,2,3} Euphoria would try to look up "Fred" in s in some efficient way (linear search, hashing, whatever). If "Fred" couldn't be found it might fail, or perhaps = return some special value (what value?). So far I haven't been convinced that any of the above are really worth it= , since you can achieve the same effect fairly easily using the existing language. Plus the fact there are at least three choices = makes it difficult to confidently commit to one of them. The main reason is I don't want to make the language more complicated without good reason. Regards, Rob Craig Rapid Deployment Software =
4. Re: Sequence index with sequences... Why not?!
- Posted by Anders Eurenius <c96aes at OXE.CS.UMU.SE> Jun 07, 1997
- 663 views
> Anders Eurenius recently suggested that Euphoria should > allow subscripting of a sequence with a sequence. This is a > reasonable idea. I can understand his arguments in favor of this > feature. Thank you. The way I'm figuring it, sequences are stored as linked lists. = The node-type is some kind of datatype tag (as prolly all objects have) in add= ition to the actual data (pointer to next node, integer, whatever). If so, makin= g trees (and such) tricky would really feel pretty stupid... > I'd like to point out that in addition to using recursion to > subscript a tree of unknown depth, you can also write a > loop that subscripts one level with each iteration. Oh, yeah... It's tail(?)-recursive... ok. doable. > This topic was discussed a few months ago on this mailing list, > and the rest of this message is a copy of what I said back then... There's an FAQ and I didn't read it. Great. <bonk><bonk> > I've received many suggestions for defining what it would > mean to subscript a sequence with a sequence: Yeah, ok... how about using {} or () var and func can't have the same name= can they? Or maybe just s[#{}]=3D>Zeitlin, s[=A4{}]=3D>dimensional, s[%{}]=3D>= associated... Sure, I do get the part about complexity though, but the way I see it, it'= s easy to learn the basics, and that's what's important. If the black-magici= ans do weird stuff, it just means it's a powerful language... > 1. Jeff Zeitlin's idea (it's done like this in APL): > s[{a,b,c}] is {s[a],s[b],s[c]} Kinky! Hey Jeff! Does it do any cool tricks? > 2. Other people suggested: *Anders idea too* > (useful for tree structures of unknown depth): > s[{a,b,c}] is s[a][b][c] I was slightly surprised it didn't already work this way, it felt very nat= ural > 3. Someone else suggested (the database people would like it): > s["Fred"] is the Euphoria object associated with "Fred" e.g. > s["Fred"] =3D3D 99 > s["George"] =3D3D {1,2,3} > > Euphoria would try to look up "Fred" in s > in some efficient way (linear search, hashing, whatever). > If "Fred" couldn't be found it might fail, or perhaps =3D > > return some special value (what value?). Easy: junk token like nan, or something. But, uhh, what is this associated= object thing? How's this: it's a giant sequence, and links are kept as index-sequences...? > So far I haven't been convinced that any of the above are really worth i= t Perhaps it isn't. If I can escape the overheads of recursion, I'll try to = make a generic tree library... > since you can achieve the same effect fairly easily using the > existing language. Plus the fact there are at least three choices Yeah, but the others are totally twisted! B-) > makes it difficult to confidently commit to one of them. You don't have to. > The main reason is I don't want to make the language more complicated > without good reason. Makes more sense. If you'd buckle every time, it would become spit and bai= ling wire real quick... > Regards, > Rob Craig > Rapid Deployment Software /Anders -------------------------------------------------------------- Anders Eurenius <c96aes at cs.umu.se> UIN:1453793 Computer Science/Engineering student at the university of Ume=E5 --------------------------------------------------------------
5. Re: Sequence index with sequences... Why not?!
- Posted by Anders Eurenius <c96aes at OXE.CS.UMU.SE> Jun 07, 1997
- 659 views
Whoa! Messy! How does the mailserver do it? /Andy