IRC log started Sun Feb 13 00:00:01 2000 [msg(modtunes)] permlog 2000.0213.mod -:- hcf [nef@me-portland-us202.javanet.com] has joined #modtunes -:- mode/#modtunes [+o hcf] by ChanServ -:- water [water@tnt-9-153.tscnet.net] has joined #modtunes -:- mode/#modtunes [+o water] by ChanServ i /invite'd him to #osdev and he joined it, which i didnt expect anyway, get eih in here ok -:- eihrul [lee@usr5-ppp114.lvdi.net] has joined #modtunes yes... did you follow what i was saying? but i always thought this would be automagically handled by a meta-object some how :) yes but the syntax has to handle it or we'll get infinite regression and inconsistencies by just modifying lookup appropriately for method arguments "appropriately"? you have to specify the namespace appropriate such that it accesses a given namespace... yes, but which one? which in itself seemed tricky exactly because something has to know which one :) yep the method needs to know which namespace it belongs to and methods are just objects by a different name and it could belong to many... theoretically well, we just need to know how to manipulate namespace-context explicitly or, as necessary to make it work of course, cleanness is good, but we need building blocks let me show an example myObject (setVar1 foo) as it is, the first parenthesis pops the object's namespace onto the stack so that "setVar1" gets looked up and can access meta etc and it gets identified properly as part of myObject's namespace, not the global one, avoiding conflict the problem occurs when 'foo' gets encountered * eihrul/#modtunes almost sees this as a thread-local attribute. naturally, we want to grab 'foo' from the global namespace by default, unless we want another variable from myObject if we want a variable from myObject, we can still use the global namespace to get it via (self Var3) 09:30pm actually, this would require the self binding to remain in effect even as we access the global namespace er... s/global/enclosing/ hm... thread-local well anyway it seems obvious to me that we need a special syntactic operator to access this namespace though i don't have any idea how thread-local data would fit into slate :) e.g. myObject (setVar : foo) well, we'll see about threads soon enough because a thread must enter into a namespace to access its data which could be conceptually modelled by a namespace stack i used the colon because it reminds me of smalltalk and it seems the appropriate context in which the operator would be used yes, that's true though, it ruins the uniformity of object-namespace handling :) -:- lar1 [larman@sdn-ar-018casfrMP017.dialsprint.net] has joined #modtunes -:- lar1 [larman@sdn-ar-018casfrMP017.dialsprint.net] has left #modtunes [] however... you have a stack of objects that have been looked up well, maybe threads should be later by default selectors are looked up in the top... not sure i follow dude por ejemplo... (namespace (myObject (setVar : foo)) as the evaluator descends into the tree, to foo it looks up each selector, namespace, myObject, setVar, by default... selectors are looked up in the last object to be looked up at the front of an expression if you look at this as a stack then its merely looking up selectors in the top of the stack which suggests they can be looked up from other objects residing on this stack perhaps by binding some syntactic name to it and using it later to override yikes slow down whoa, lag burst ok -:- mode/#modtunes [+v eihrul] by hcf -:- mode/#modtunes [+mn] by hcf 09:40pm i'm still not sure i follow you precisely i mean, i understand cascaded look-up basically binding a name to a previously looked up object and using this name later to override where a selector is looked up how, though? you'd still need some primitive syntax operator * eihrul/#modtunes nods. so we have two proposals it's not the cleanest or well-thought out of ideas but it's an idea :) well we can use the *nix file system syntax e.g. "..", ".", "/" , etc it works (at least it works, that is :) and we wind up merging namsespaces with a sort of file-system i actually used this idea extensively in my old design in college i even used it for the inheritance hierarchy, though with different operators ult: check logs to catch up though it's readability may suffer :) well, certain of the namespace operators will be less successful than others .. will definitely be common root itself could access modules or something water: you still need a special syntactical operator for accessing the bottom of the stack of 'directories' :) hell, you might even do regexp searches :) but i suppose that's what '/' would be.... yes it happens to also be why i named the root of the inheritance tree "root" :) i can't believe i didn't even recall this until an hour ago this system even allows for "proc" to be semantically meaningful >:) so there! :) does it sound like it'll have any problems? i think it even obviates the need for a 'self' pseudo-variable 09:50pm not quite... ./? because self may be relative to root in an undescribable way... what about ./? and using combinations of .. is not exactly intuitive... ahem ./ aka current directory... but if you have nested sexp yep then you have to go back down the stack to access self :) well, we could use parentheses explicitly for namespace contexts instead of the lisp version where parenthesis use is liberal well hm i think we would *need* to go back down the stack to get "self" no matter what because otherwise self would just refer to the message selector :) well, i think being able to bind a name to a specific object is useful for this how do you mean? well, instead of referring to something relatively you bind a specific name to a looked up variable as explained earlier an ad-hoc example using an off-the-top-of-my-head-syntax: hm like a symlink? (foo=bar (baz bar:x)) foo is looked up, and bound to the symbol bar dude you gotta get better names which can then be used later to override where x is looked up in foo bar and baz are so versatile :) they suck, dude especially in o-o so foo would represent ... ? and where would it be bound? (objectSelector=overrideSymbol (methodSelector overrideSymbol:argumentSelector)) not much better, but it's a start so describe what this does 10:00pm it binds overrideSymbol to the result of looking up objectSelector... only so much as syntactically the compiler already knows where the looked up result is but within what namespace? i want to know where that binding is its completely syntactic :) wow. zero-info there dude sometimes you really surprise me :) the bindings could reside somewhere well, it seems like you're just using the equivalent of a symlink but i don't see how that's ultimately useful not necessarily prove the difference well, the name is available to any enclosed directory whereas a symlink is just an alias within a specific directory :) ok i already assumed that s/directory/namespace/ er... vice versa whatever doh! much more similar to the lambda calculus than the file system :) sure but it's still about nested scopes which imo, file systems should be, but that's beside the point so have we agreed on a set of operators at least in terms of semantic requirements? i don't know... my conscience is saying there's something inelegant about this :) well we have a metaphor at least what irks you about the metaphor? complexity huh? i'm not proposing a posix file-system, just a metaphor its one of those situations that's easier to single out as wrong but harder to suggest a correction :) hm gee thanks if i had a solution, i'd let you know :) i think its just a case of you thinking a word is mispelled when it isn't :) 10:10pm well you have to agree that we need mechanisms for handling namespaces no matter what, and that namespaces make it complicated to access remote code i'm just saying that accessing self, parent, and meta involve namespaces too yeah, i'll ponder over it tonight and the more unified a system we provide, the better * eihrul/#modtunes nods. i just can't help but look for something more aesthetically pleasing though... we already know how to do block-scoping with inheritance what could possibly be more pleasing? well maybe if we removed the restriction on the shape of namespace relations my mind is foggy with the buzz of a head-ache and tiredness ah so i really need to sleep on this :) yes, i agree -:- mode/#modtunes [+v ult] by water what do you think, ult? * ult/#Modtunes thinks unified systems are great. what about using namespaces using directory operators? and possibly even inheritance hierarchies using a similar set of operators? (ult/#Modtunes) Well...it's certainly a novel idea...but wouldn't that incur a bit of overhead? i don't think so... smalltalk and self have the same operators under different names but i could be wrong (ult/#Modtunes) Heh, And self claims speeds up to 50% of that of C! well, that's a different kind of claim i mean, they only get that because of a lot of compiler tricks even though the tricks can be used on other systems hm so i've wound up "dirtying" the syntax a little in exchange for a fully-usable syntax and we seem to have gotten the namespace system working i think (ult/#modtunes) Does it do what you want it to do, though? hm (ult/#modtunes) Don't compromise, that's what makes languages suck. well we can send messages to self, which wasn't possible before and we got rid of our previous infinite recursion with syntax, which of course is good unfortunately, we don't have absolutely pure o-o 10:20pm well we still have it, but with namespaces i mean, now we can't get rid of namespaces no matter what * ult/#modtunes nods (ult/#modtunes) So they really ought to be intuitive, most importantly. and hell, in college, i needed *four* hierarchies instead of *two* yes i need to make sure they make sense well syntax sugar could be overlaid by macros macros just being transformers of trees of symbols wow. it's been a good day, then. i'll write all this up thanks everybody :) water: hey hcf: yes? ur gonna do up a code page right? yes, with eihrul's evaluator for now thx for reminding me get /tmp/slate/* and re-ast right note re-ast means ast'ing all the files otherwise some will differ :/ yes i have them cached on the server changes: removed added navbar link to slate-code.html ok cool * hcf/#modtunes is away: (afk) 10:30pm alright well i don't think i have anything more to add here so, if you don't mind, .... -:- mode/#modtunes [-v eihrul] by water -:- mode/#modtunes [-v ult] by water 10:40pm [msg(modtunes)] newlog 2000.0214.mod IRC log ended Mon Feb 14 00:00:01 2000