IRC log started Thu Feb 17 00:00:00 2000 [msg(TUNES)] permlog 2000.0217 -:- SignOff smkl: #TUNES (Ping timeout for smkl[glubimox.yok.utu.fi]) -:- smkl [sami@glubimox.yok.utu.fi] has joined #tunes -:- SignOff hcf: #TUNES (Ping timeout for hcf[me-portland-us926.javanet.com]) -:- hcf [nef@me-portland-us932.javanet.com] has joined #tunes -:- smoke [smoke@15dyn89.delft.casema.net] has joined #tunes -:- SignOff hcf: #TUNES (Ping timeout for hcf[me-portland-us932.javanet.com]) -:- hcf [nef@me-portland-us932.javanet.com] has joined #tunes -:- SignOff hcf: #TUNES (Ping timeout for hcf[me-portland-us932.javanet.com]) -:- hcf [nef@me-portland-us932.javanet.com] has joined #tunes -:- smoke_ [smoke@vengeance.et.tudelft.nl] has joined #tunes morning hi hoy 02:50am how were the requirements for the HLL derived? (www.tunes.org/HLL/requirements.html) it seems to be based on the philosophy described in 'WhyNewOS.html', which I do not fully agree with.. it all seems to be based on money :( 03:00am money? 03:10am yup -:- abi [nef@bespin.dhs.org] has joined #tunes the paper assumes that it's `terrible' that programming takes up so much precious time and money. and almost the entire piece on security does not apply to recreative programming it's not that i don't agree on the important points, but it's all brought forward as if to stimulate the corporate world to dig the ideas of Tunes. (which is, in my humble opinion, ridiculous) hmm.. we can't have that.. what? (since i said so many things at once) 03:50am searching for a goal for tunes is not necessary imho sucking up to suits is not a Good Thing grin well it's not bad, but it's unnecessary perhaps i interpreted WhyNewOS incorrectly.. i get the feeling that, in a way, it's more of an excuse than a foundation ask Fare fare? i think fare is sometimes looking at another screen and interruptible with a beep (/msg Fare ^G) or at http://www.tunes.org/~fare/ or pronounced Fahree brb.. need shower 04:00am -:- SignOff smoke_: #TUNES (One day sheep will rule the world) -:- SignOff Fufie: #TUNES (bbl) -:- SignOff hcf: #TUNES (Ping timeout for hcf[me-portland-us932.javanet.com]) -:- SignOff smkl: #TUNES (changing servers) -:- Phigmeta [nospam@207-193-6-155.noc.sbis.net] has joined #tunes -:- Phigmeta [nospam@207-193-6-155.noc.sbis.net] has left #tunes [] -:- SignOff thomas: #TUNES ([x]chat) -:- smokie [tw026024@zaalf15.twi.tudelft.nl] has joined #tunes -:- SignOff smokie: #TUNES (BitchX-75+Deb1an -- just do it.) -:- bineng [Anders@j141.ryd.student.liu.se] has joined #tunes -:- smkl [sami@glubimox.yok.utu.fi] has joined #tunes Context! 09:10am -:- ult [noone@user-37kbaig.dialup.mindspring.com] has joined #Tunes switch 09:20am eh I got TeXmacs working. Anyone that knows how to type a logical-not symbol? 09:40am ^ erm, ! even. that "-" with a small bend on the end '!' doesn't do anything 10:00am -:- SignOff bineng: #TUNES (Ping timeout for bineng[j141.ryd.student.liu.se]) -:- bineng [Anders@j141.ryd.student.liu.se] has joined #tunes -^ thou meanest? hum? nah.. that doesn't do it either 11:10am I mean the negation sign in logic.. can't find a way to write it ~ will do as a replacement, you mean? yes i haven't used texmacs ok but ~ is just so common I'd prefer the "real" sign... wonder if it's present. 11:20am sure probably just in a different font -:- SignOff ult: #TUNES (Leaving) 11:30am -:- Fufie [stig@tunnel-44-11.vpn.uib.no] has joined #tunes -:- rares [rares@wtrb-sh2-port212.snet.net] has joined #tunes -:- hcf [nef@me-portland-us232.javanet.com] has joined #tunes -:- rares [rares@wtrb-sh2-port212.snet.net] has left #tunes [Segmentation] what is meant with `hygienic macros' (context: scheme) ? is it a technical term or just a metaphor for how clean it is? metaphor it's about unintended variable capture ok ah! i actually read about that :) 12:10pm -:- SignOff bineng: #TUNES ( <k!14>) -:- thomas [thomas@193.217.63.152] has joined #tunes hei 01:10pm hi thomas 01:20pm howdy, smoke 01:40pm -:- NetSplit: sterling.openprojects.net split from devlin.openprojects.net [02:00pm] -:- BitchX+Deb1an: Press Ctrl-F to see who left Ctrl-E to change to [sterling.openprojects.net] -:- Netjoined: sterling.openprojects.net devlin.openprojects.net -:- Fare [rideaufr@esmeralda.enst.fr] has joined #tunes -:- Plundis [plundis@130.238.23.252] has joined #tunes -:- smoke [smoke@15dyn89.delft.casema.net] has joined #tunes -:- abi [nef@bespin.dhs.org] has joined #tunes -:- smkl [sami@glubimox.yok.utu.fi] has joined #tunes -:- hcf [nef@me-portland-us232.javanet.com] has joined #tunes -:- thomas [thomas@193.217.63.152] has joined #tunes -:- air [brand@p0wer.qzx.com] has joined #tunes anyone know about mailservers? hey what is a continuation? a continuation is probably the reification of the computation, as embodied by the current contents of the call stack. what does that mean? heh 02:50pm -:- eihrul [lee@usr5-ppp195.lvdi.net] has joined #tunes -:- SignOff smoke: #TUNES (z) -:- pyro [tcn@cci-209150250079.clarityconnect.net] has joined #tunes pyro: hey, any progress with retro? -:- SignOff pyro: #TUNES (pyro has no reason) -:- pyro [tcn@cci-209150250052.clarityconnect.net] has joined #tunes air: yeah, I've got console I/O working 03:00pm dammit, my connections sucks tonight 03:10pm -:- NetSplit: lackey.openprojects.net split from sterling.openprojects.net [03:48pm] -:- BitchX+Deb1an: Press Ctrl-F to see who left Ctrl-E to change to [lackey.openprojects.net] -:- Netjoined: lackey.openprojects.net sterling.openprojects.net -:- smkl [sami@glubimox.yok.utu.fi] has joined #tunes -:- SignOff hcf: #TUNES (Ping timeout for hcf[me-portland-us232.javanet.com]) -:- water [water@tnt-9-86.tscnet.net] has joined #tunes hello all wb * water/#tunes notes 200 emails in the last 30 hours ok, MI doth suck when two behaviors happen to intersect... yeah if there were a way to guarantee no conflicts, it'd be ok like making mi less expressive well, i've been trying to find some way to express combination... i had considered inheritance by part-objects -:- hcf [nef@me-portland-us735.javanet.com] has joined #tunes is something wrong with /.? hi hcf 04:00pm water: the only intuitive notions i can come up with are composition or simply dispatching to all possible alternatives (forking) how is forking different from mi? no... it's not different i mean how to handles intersection of behavior oh if not any single one, then execute both! :) but alas, that isn't really beneficial ok i agree those are the two intuitive possibilities but i only think composition will work or the intersections of the two different methods themselves :) most likely mi will only work for co-inductive objects but then this lead me to interfaces... and how you must specify in what way you expect the given objects to act... so that it can unambiguously decide the correct behavior from a set of behavior hi water so? abi has ~3000 less factoids now hcf: cool water: rmm, i'm not saying 'pro' or 'con,' just that interfaces allow the problem to be solved in said way... k there are also aspects to consider for composing objects but weaving as it has been implemented is difficult to meta-progran wow. a lot of posts to the squeak mlist are concerning syntax ideas * eihrul/#tunes ponders. though, i've been thinking that expressing the idea of being the receiver for a method is not necessarily that useful when expressed as the child of both the receiver and a prototypical method while it does handle the scope semantics really well hm? it makes manipulating the method and the receiver individually more difficult why? unless either parent can be referred to by name :) in which case, then it's fine 'receiver parent' eh? parent is just an accessor method well... with MI, you have multiple parents :) 04:10pm oh you 're discussing mi still so having an implicit 'parent' slot is not as useful when there's multiple parents of course not i only did that because i wanted mi kept out of the core language in that case, mi still allows an intuitive definition of a receiving a message :) in what case? it binds the particular object and behavior together the receiver and method, respectively what is 'it'? it, the use of mi to express sending a message to a receiver what are you talking about? the idea of binding a receiver to a method as in message sending wtf does mi have to do with that? well, i'm thinking in terms of scopes... you want the closure to *inherit* the argument and receiver?!? no... the closure inherits the receiver and its prototypical closure uh that seems to break the conceptual model where at? i mean that a closure should not have the behavior of the receiver it should *invoke* it depending on which conceptual model... the one that makes sense, of course :) 04:20pm in terms of scopes it does... i hardly find it intuitive that a function should start acting like one of its arguments that's crap in that the scope within the method is both the scope of receiver and the method well... if you consider a behavior a temporary extension of an object :) sorry dude i can find a big flaw one would not want one's closure able to respond to messages that have nothing to do with the computation especially if another object sends the messages (hm Slate's syntax resembles NeoLogo's somewhat) * eihrul/#tunes ponders... from within the method itself it's somewhat desireable, oh well... just a thought nothing consequential we can get the same functionality without mi yeah, with relative addressing! :P dude this debate has been repeated identically within oo lang design for the last 20 years and every time mi breaks concepts in exchange for no additional expressivity you may as well use macros as mi i never said mi was perfect... and in it's current state i wouldn't use it either mi doesn't have a 'state' but it works nicely for specifying unions so long as their are no intersections :) it's a concept that doesn't work for inductively-defined objects at all the word has a state... in the form of the ideas behind it screw the word mi works only for co-inductive ideas which most languages don't use hm a few smalltalkers seem to dislike message-passing syntax for flow-control well, what others options are there? unification, special purpose control constructs... 04:30pm singleton objects supported by the vm (:P) eh? how does that tie in with flow control like true and false oh... but they don't signifigantly effect message-passing syntax :) as applied to flow-control... well i don't even like the singleton idea * eihrul/#tunes is more a fan of unification. i mean, it's okay if you compile it into the vm because you like it but in the core language it's a terrible thing within slate, we can get singletons very easily though how do you put unification into an OO framework? :) however, we still haven't demonstrated anything near the idea that we can compile bmo stuff dynamically into the vm eh? nothing, just a branch well, if you have a reification of the vm... i don't see what's too impossible about the matter just a matter of making a good compiler for it hm. are we ready yet for describing the run-time model? might as well try if we're not... we'll find out k hm maybe not now :) i guess i'm busy enough digesting incoming mail 04:40pm -:- SignOff hcf: #TUNES (Ping timeout for hcf[me-portland-us735.javanet.com]) -:- hcf [nef@me-portland-us735.javanet.com] has joined #tunes well, how are we on namespaces' issues? what was the issue? not *the* issue all the issues with namespaces for instance implementation, syntax, etc oh... as well as consistency and the conceptual model the relative addressing i consider an unresolved issue :) i didn't know it existed explain your ../ oh namespace shifters hm i need better names for those they specify relative locations sort of how sort of? well the problem is of course that references don't have to form a tree so it's not about "location" otoh... hm then what does ../ actually mean... ok i think i have a way to explain it the problem is that ../ only works if you have an unambiguous way to say the "a resides in b" 04:50pm you do... somewhat but only in the inverse er, converse i mean to me, a possible solution is to have an implicit container for the evaluator at all times so that all objects created and destroyed by default are part of an object representing that container that then says the global namespace is the namespace of the evaluator... hm maybe and maybe not >:) the namespace of the evaluator could cut through all the namespaces well, it would have to :) but it would be like having /usr/bin/ in your path variable roughly hm who needs namespaces anyway? :) intentional programming... that's it heh um no besides, how else do we have two different methods of the same name ? eh? well if all methods are just objects, then objects are just namespaces for those objects s/those objects/those methods/ yeah, and? :) so i think that idea nicely generalizes to a global (world-wide) namespace system what, that the namespaces of objects that are a consequence of the evaluator are within the namespace of the evalutor as well? huh? ok, you lost me somewhere then i'm saying containership as a metaphor is useful, not just expedient :) i mean it's a nice intuitive model of a system well, i thought we already had it... or almost did 05:00pm using what? well, that would hinge on pseudo-multiple-inheritance anyway you look at it :) er... perhaps not yuck then how else do you propose to introduce containership? look you're going to have to have some phenomenally-persuasive arguments to make me even consider mi "a references b" => "a contains b" er no doh! "a references b as a slot" => "a contains b" well, isn't it somewhat binary in that an object needs to know where its contained? :) no the object doesn't need to know the *evaluator* (aka system) does oh yes i remembered an idea i got recently so objects outside of the evaluator don't quite have a container... which addresses mi sigh eihrul: no! though no objects can exist outside of it not true well, if the evaluating knows where objects are contained but they don't... where are you getting this stuff? what happens if an object outlives the evaluator? oh god evaluator /= program it's a persistent object like everything else yes... besides all the info is in the system image but umm, reexplain your idea more clearly please :P "more clearly" being akin to "go find a black hole" no... it means, clarify... -:- lar1 [larman@1Cust198.tnt20.sfo3.da.uu.net] has joined #tunes i'm saying that the containership relationship will effectively form a file system eihrul: i know what the fsck it means -:- fire [no@209-68-229-223.dialup.cust.tfb.com] has joined #tunes hey all an object doesn't *know* where it belongs the system merely uses it where the *system* knows it is that's fine.... amen water :) i already dig that... to me, a possible solution is to have an implicit container for the evaluator at all times so that all objects created and destroyed by default are part of an object representing that container oh i see the problem in your parsing ;) that implcit container is not fixed, dude 05:10pm in that the containment relationship for the evaluator is determined as it is for all objects? ugh well, define 'implicit container' that's quite vague... the evaulator indeed is a system object no it ain't yes it is... water: can you compile with squeak? it's the same as having a "current path" in a shell if it doesn't mean the same containment relationship as for other objects then it means something else quite vague... fire: compile to what? machine code so if it is not such, explain executable fire: not within the squeak image i see fire: not yet ;) bummer water: eh? eih: current path yes, i'm damned well aware of that... but current path is equally vague... do i even have to explain that? anyone here used lex and can help me? grrrr look.... fire: not here in that the containment relationship for the evaluator is determined as it is for all objects? that's what you're saying to me... :\ eih: you're not helping me help you :) i don't get what you're asking in that for C contains an object created by the evaluator, and D contains an the evaluator, C = D... this is what's getting grokked dude *every object is created by the evaluator yes.... but *every* object in every namespace this rules out the notion of nested evaluators :) no it doesn't explain how you think it does as i said... don't reiterate, explain for C contains E, and O is created by E, D contains O, and C = D initially... speak english!!!!!!!!!!! grrrrrrrr the container of the evaluator is the container of the objects it creates no!! to me, a possible solution is to have an implicit container for the evaluator at all times so that all objects created and destroyed by default are part of an object representing that container the evaluator creates objects in the currently *selected* namespace the selection is implicit to object creation this selection exists independently of the evaluator then? yes just like in a shell and hence is not the same kind of 'implicit container' as you inferred it was... it's implicit to evaluation, isn't it? well, when you say container... i take it to mean the normal containment relationship container of *what* 'implicit container' don't assume ask you asked 17 wrong questions 'an implicit container for the evaluator' FOR NOT OF they can be used very similarly, afaik :) a container implicitly used by the evaluator an implicit evaluator for the evaluator to create objects within 05:20pm this is so FSCKing frustrating * eihrul/#tunes hates English. how's your spanish? it's just a shell metaphor, idiot * eihrul/#tunes sighs. rusty but good IDIOT... it's not that that is anyway what's confusing i alluding 10 times to shells your ambiguous use of terms that you yourself define is what is confusing eihrul: Use <>! dude you need to get a new parser or something i bet lar or fire would easily not have been confused fine hell even atg would probably not have had problems then talk to them for help... no i like you most of the time but you assume without questioning your assumptions which really irks me to no end well, i didn't know you so hated assumptions... i'm a mathematician at heart but please refrain from name-calling i don't feel it's appropriate to the discussion nor useful, in any way well i got pissed off a long time ago i had to express it and i don't think the landlord would like it if i broke all my walls well, you express it at the expense of others... oh so i should hit myself? :) or something that won't hit back... i don't have any place for things like that but anyway... namespaces my only comfort is taoism/zen, and they can't be invoked while talking to coders now you grok? yes... it was just an incorrect assumption indeed though if you could be more accomodative to my parser :) i'll try wow heated but when you get confused, slow down * fire/#tunes makes some popcorn i mean it: really stop and think i try as hard as possible to use simple metaphors for slate otherwise, there's simply no point but i digress well, it's just when those metaphors already have denotations... what's confusing about the shell metaphor, btw? that's not confusing but the 'implicit container' metaphor is since it was taken for its specific implementation... well i goofed ok 05:30pm ok, but let's not dwell.... where were we? but what word can i use? determining ../ semantics i don't think it's a problem especially since it moves in the opposite direction of the containment relationship... yeah well shells are definitely not an undeveloped programming area and, the can be multiple containers in the system... which can all reference the same object... so ../ can be ambiguous? s/the can be/there can be well, it's "reference as slot", not "reference" what's the difference? the question is whether once an object is created for slot use, would it be used to compose other objects hm actually it doesn't matter it all depends on the evaluator however... abi: part #tunes goodbye, hcf. -:- abi [nef@bespin.dhs.org] has left #tunes [] huh? well maybe the creation space would be the namespace otherwise i see the ambiguity 05:40pm actually, if all objects are accessed through namespaces, then it still works because you simply obtain the object by accessing the original namespace ../ being a temporary 'undoing' of entering a namespace? and it still works if you s/namespace/container/ hm there are two different interpretations to that -:- ult [noone@user-38lc69b.dialup.mindspring.com] has joined #Tunes one is where you access the object strictly containing the namespace the other is process-oriented where you look at the timeline of the currently-selected path for the evaluator yikes! alan kay was at uwash recently and i didn't get a chance to see him that would of been fun... s/of/have so which semantics should ../ have? well, i happened to be inferring the latter... i think it's clearest to use the namespace path as it removes ambiguity if you have many containment relationships for an object... well the latter would be dynamically-varying so it's still ambiguous we *could* offer both hmmm... namespaces have to be explicitly entered, no? sure by looking up a particular selector in the namespace explicitly hm i just considered a more generalized notation yes 05:50pm -:- SignOff pyro: #TUNES (pyro has no reason) -:- SignOff water: #TUNES (Read error to water[tnt-9-86.tscnet.net]: Connection reset by peer) -:- water [water@tnt-9-239.tscnet.net] has joined #tunes * water/#tunes checks the logs odd... i didn't even see you leave i've been gone 3 minutes right after my last sentence luckily, i've been quiet for 3 minutes well anyway there's a way we could have our cake and eat it to, by generalizing the selector idea to include all containers s/eat it to/eat it too/ how so? but we'd have to distinguish between links to contained objects and links to containers well ./something picks out an object in the namespace perhaps .\something could pick out an object containing that namespace or a similar notation what do you think? That sucks. 06:00pm er how would you determine that? well the syntax for it does, but what of the semantics? semantics are ok, the syntax sucks. ult: ok why not namespace:class::object or something no classes ok then just namespace:object water: well, what is the usefulness of .\ over ./? or rather .\ over ../? eihrul: syntax is bad. ult: syntax is not the issue here... syntax is just as well provisional... well you can pick out any of the objects containing the currently selected namespace explicitly 'any'? ergh hm that would mean .\ would have to be a set of objects? yeah, except for the fact that selecting those objects would be ridiculously weird because they could be all over the place yes, and .\ would be a rather exhaustive operation well what do you propose? what's wrong with just doing a ../self? er... well nix the self :) heh yeah i thought you'd say that ../. ../.? . - current directory -:- SignOff ult: #TUNES (Ping timeout for ult[user-38lc69b.dialup.mindspring.com]) looks redundant it isn't... why not? -:- ult_ [noone@user-38lc6c3.dialup.mindspring.com] has joined #Tunes 5 4 er -:- mibin [mibin@an1-393.tiscalinet.it] has joined #tunes as the / specifies selection... (atleast for filenames :>) yeah selection of namespace... so? .. and . are merely files in unixish filesystem :) they're not quite directives 06:10pm -:- ult_ is now known as ult no, they're pseudo-slots very very odd ones if they are no they just get set implicitly they're not more odd than 'parent' (object (message ./someArgument)) bah this would infer that '.' exists within the object looked up by message (ls) (rm 'rf /SomeNamespace) ./ selection should be implicit which is quite odd... and that '.' results in what would be considered the 'self' maybe we need a new meta-object type yes, it is. in a concurrent situation :) you could have weird race conditions hm but, probably not... it's just weird as a pseudo-slot weirdness is a negative factor also... that suggests that (namespace selector) is equivalent to namespace/selector well perhaps then a more message-like syntax and that you have non-orthogonal functionality there :) the problem here is that namespace selection is not at the object level, it seems * eihrul/#tunes nods. so where does it belong, in an oo way? i think containership as namespace is fine semantically the problem is providing a clear syntax for it... the special operators i've tried are inconsistent * eihrul/#tunes ponders. 06:20pm if message knew it's container, wouldn't be a problem... but that's not desireable :) how frustrating well do we want a file system like service or not? it allows us to have modules for sure well, namespaces are nice... especially to have 'self' if not for modules we could have namespaces be special objects i suppose but that defeats the purpose well obviously it's a nice consequence of our object model that they work as namespaces hm i just had a thought visually, non of this stuff matters i mean, in a vpl sense no paths or anything would be needed... you'd merely drag the object's name to the new container like as a symlink the path would be implicit you could even migrate the original object between namespaces and have links automatically updated even to access the 'self?" hm sure i suppose otoh cloning the object provides much the same thing, using delegation 06:30pm well... so containers wanting an object that already exists in them would just clone atleast textually... (object (message foo)), it's not easy to access the namespace 'object' was looked up in from 'foo' otherwise :) oh yeah duh i forgot about that well the text will simply have to have the namespace shifter syntax and the cloning idea allows us to have our hierarchy without the headache rmm, why clone? why not? :) well... you get the same object in another namespace oh, instead of migration? well migration could still be used on the original, as long as it updates the clones to reflect the movement eh, why do you need cloning an migration? s/an/and well it might be handy to migrate the original object no matter what it's just a possible need that users might have if an object isn't bound to a particular namespace then it shouldn't be harder than just giving it a slot in a new container... not true oh n/m *isn't bound* i msiread mis-read, even :) but still the clones have to refer to their parents in some way or maybe i'm confusing the issue 06:40pm hm so basically the 'parent' slot just returns the object no conflict there but *setting* the parent slot to an object in another namespace than the currently-selected one seems to need special syntax otoh... yes... because our syntax currently only allows for access to the current object... it makes no provisions for namespaces, really... hm atleast, not intentionally :) you can go up, but you can't go down... maybe message-based namespace functionality should be in Root then well, i'm not too sure about that... * ult/#Tunes really needs a new ISP. because you said that it's more bound to the textual interface which then burdens it upon you even for the visual interface hm and at the Root, it's even worse... because it's the Root of everything :) yeah but it's not the container of everything in any case, it seems very seedy... heh "seedy"? :) so if it's text-bound, then it should be truly text-bound 06:50pm however, we're working with real structure, not just text not necessarily... hell, we could play with the idea of implementing namespaces within ext2fs, god forbid :) though hmm, perhaps... so long as the compiler knows how to generate code to access .. :) from an arbitrary position right that's what counts grrr i just accidently flushed over 1000 messages into my mbox... heh -:- SignOff ult: #TUNES (Read error to ult[user-38lc6c3.dialup.mindspring.com]: Connection reset by peer) before email, that'd be an absurd statement s/be/been/ though... .. beyond one level of indirection could be quite impossible referring to what> ? because beyond .. the exact identity of ../. is not known... ../../, for example... why not? well, unless a stack is kept :) think inode :) eh... its a question of an object knowing what contains it... no it isn't it's a simple matter of using the implementation style of a fs you need some stack... whether implicit or not... where picking two directories up is simple well, fs have 'container' links... ok sure the '..' is essentially a slot referring to its container sure which i though we decided against... but why? ...did we decide against it? objects then cannot have two containers... but we solved that i thought by using cloning they're then subject to the same boring axioms of the physical world :) no, cloning objects in the real world hasn't caught up to star trek 07:00pm well... if the 'parent' slot can be in any way accessed then the object doesn't behave the same as the real thing unless meta-object hackery is done well that's where the damn bmo comes in!! dude have you read merlin stuff? observe meta-object hackery in previous sentence... i know not all of it you should always implicitly ask whether the bmo can do X in slate chances are it can then you have a full binary containment relationship :) "full binary" ? huh? instead of half a binary relationship :) also... oh by having the .. slot * eihrul/#tunes thinks this in some way relates to consultation. :) hm could be useful in this situation how so? aside from its container, it should behave exactly as the other object... uh uh, what? please explain a little better, i guess since an object can only have one container a clone must be created to give an object a second container... since this is the only attribute we need to change or rather, behavior oh ok also... i thought you were talking about a totally separate issue this could possibly generalize to an ipc of sorts :) oooooohh with the clone being a communications end-point that *consults* with the real object 8) that certainly raises some possibilities so this even infers that namespaces could be distributed... anywhere and yes i see that it does provide consultation coool now, is there any problem with the ".." as a slot? by having one of an object's slots be its container? -:- SignOff fire: #TUNES (Ping timeout for fire[209-68-229-223.dialup.cust.tfb.com]) its just another implicit slot ala parent ok i thought you might be thinking of potential conflicts 07:10pm anyway back to this way cool notion of distributed namespaces and ipc 8) er.... wait it works in a sense for slightly more global namespaces but what about self? this would mean even passing objects would happen by cloning :) hm we may just be re-discovering "The Power of Self" here of course well, there's nothing wrong with the container thing... but it applies more to modules than to self but then self doesn't have objects/namespaces as execution threads -:- ult [noone@user-38lc6f9.dialup.mindspring.com] has joined #Tunes hm it would be simple, using cloning, to model the computation in an oo version of /proc how so? er hm well maybe cloning doesn't quite apply let's not address that until later darn it, we really should work on the execution model, but i don't feel like pontificating on it. would you care to lead the discussion? well, which aspect of the execution model :) execution model is a very broad aspect... hm yes unfortunately 07:20pm maybe just how you're evaluator could be extended to handle the whole language s/you're/your/ most of it relies on just constructing the computation and running it :) with most of the magic happening in the compiler well the intermediate code design seems simple enough, we just have to enumerate the primitives the question is whether or not we know how eval.lisp could handle that intermediate code? it need not handle it :) or atleast, not the same intermediate code as the real implementation well whatever what's more important is specifying those primitives of slate that are necessary the point is to implement the functionality and just making an execution model that implements them and conforms to them... hm i guess so so basically, you're run-of-the-mill language specification :) well we have the few from those papers about reflective prototype-based languages yeah yeah :P s/you're/your * water/#tunes pulls up the Slate semantics page ugh i just looked at this again: (myObject (setVar1 : ../foo)) how do we do this now? .. may be a slot, but is the '/' still part of the syntax we endorse? it seems like it should be well, it's not necessarily orthogonal... it's just a short-hand for what, though? (.. foo) ok i can deal with a little dirty syntax as long as we know a normal form for it it could be useful though :) in what way? (myObject setVar/someValue) :) just as a general short-hand hm ok if it's right-associative... (myObject setVar/../foo) 07:30pm but back to primitives but that's obfuscated :) yes it is ok primitive assignment, cloning, BasicApply, ... the arithmetic and logic crap the stuff i wrote up about Root on the semantics page BasicLookup and Top 07:40pm it's too soon for AsNewThread aka fork... am i missing anything? conditionals would be useful :) is that some kind of joke? actually, you could implement conditionals from within slate :) you mean like smalltalk and self do, right? :) well... i mean the notion of branching itself... explain by taking 'true' and 'false' selectors into an object though this still suggests some way to convert an arbitrary object into a 'true' or 'false' selector -:- SignOff ult: #TUNES (Ping timeout for ult[user-38lc6f9.dialup.mindspring.com]) which is ugly :) uh yes what's wrong with how self/smalltalk do it? nothing... but the notion of branching itself is primitive btw, we can always rewrite the control structures the interface isn't, but branching itself is... how so? msg-passing seems to work as branching how so? -:- mibin [mibin@an1-393.tiscalinet.it] has left #tunes [] well you have two blocks passed to a conditional message yes... -:- ult [noone@PPPa50-ResaleNashville2-4R7232.saturn.bbn.com] has joined #Tunes but the notion that one or the other is executed is quite primitive... * water/#tunes opens squeak to look at this very closely ok, this account is -slightly- illegal, but it's a lot better than Mindspring. the interface isn't... but what happens behind it is eihrul: well please explain what you mean i don't understand at all well, it's like a cpu without a branch instruction, basically :) that sounds like ordinary message-passing or rather, conditional branch how don't the primitives i've listed handle branching? -:- SignOff lar1: #TUNES (Ping timeout for lar1[1Cust198.tnt20.sfo3.da.uu.net]) foo ifTrue: bar ifFalse: baz.... ok 07:50pm so do you just mean executing a block? aka object? well... the problem is that bar needs to be executed if foo finds itself to equal true... so we invoke 'bar result' in smalltalk the object True always executes the right block the object False executes the other one as in False ifFalse: myBlock always runs myBlock but True ifFalse: myBlock just returns True grok? -:- SignOff eihrul: #TUNES (Ping timeout for eihrul[usr5-ppp195.lvdi.net]) we could do it in other, equally-simple ways doh! -:- eihrul [lee@usr5-ppp24.lvdi.net] has joined #tunes -:- ult_ [noone@PPPb9-ResaleNashville1-2R1023.saturn.bbn.com] has joined #Tunes ok well my isp works now lets see if my power will stay on? what was the last thing you read, eih? mindspring is contagious... hold -:- SignOff ult: #TUNES (Ping timeout for ult[PPPa50-ResaleNashville2-4R7232.saturn.bbn.com]) okay, but basically, you're implementing a subset of unification :) (did you read the logs?) yes... -:- washort [washort@d137.narrowgate.net] has joined #tunes an object still needs to know if its True or False which isn't really complicated... but that's a constant attribute describe unification, i know a lot of terms going by that name -:- ult_ is now known as ult well like i said, we can do it in other ways i'm using it in the Haskell sense... multiple-dispatch by value :) oh * washort/#tunes didn't know Haskell did unification haskell does everything :) heh or atleast a considerable subset did the design commitee tell you this? :) 08:00pm water: so how do we determine if an object is true? i only know of unification in the logic-programming sense eihrul: you have squeak? yes... washort: yes so do i like (a 1) = (7 b) results in assigning 7 to a and 1 to b look in Kernel-Objects for the Boolean objects and its subclasses True and False yeah, it just happens one-way only in haskell :) -:- SignOff hcf: #TUNES (Ping timeout for hcf[me-portland-us735.javanet.com]) eihrul: well, IIRC the whole point was that it went both ways * washort/#tunes shrugs i'm no language theorist, i just play with this stuff occasionally :) the operators work appropriately unfortunately, the operators there are defined as msg's to the boolean, which is assymetrical and therefore ugly hmm we could do it alternatively and easily with operator objects conditionals get too messy not for self/smalltalk water: though, how do you determine if an object is false other than having the object itself know? :) * washort/#tunes hits himself eihrul: ow, ow, ow, i just thought of a way to do it that's ugly and perverted eihrul: don't make me do that eihrul: it's not hard well, supply a not-hard way to do it :) either the object is an operator that returns a boolean or its the boolean itself, or it throws an exception well, how does the operator do it... lol dude that's easy well, yes... but i'm looking for the explanation :) not the opinion you can just invoke low-level boolean ops or perhaps hm some thoughts: you could have True and False be general classes of objects... all objects that are logically true descend from True, and those that are not descend from False :) yuck don't make me sick that's just completely wrong well, how would you do it? :P -:- hcf [nef@me-portland-us812.javanet.com] has joined #tunes you could have a "boolean registry" that keeps a list of all objects that are ture and all that are false ;) take And for instance 08:10pm yes, but what about it? you still have to convert objects to a boolean object some how... :) result contains arg1 ifTrue: (return (arg2 ifTrue: True)) duh i was typing geez what an impatient guy type faster :) at a conservative 60 wpm you should have banged that line out already... i know i wanted to make sure i got it right thanks for wasting my time with this crap 'wasting'? yeah this joking about typing well... your example still hinges on ifTrue: so? arg1 needs to know if its true... or ifTrue need be a black-box i can hardly think of a way to implement boolean ideas without testing for truth :) god damn you can be really dense well, i gave you one probable implementation that doesn't... yeah, a stupid implementation well, afaik, many languages use it like which ones? Lisp... which is many languages :) lisp doesn't do that does it?!? -:- lar1 [larman@dialup-209.244.107.211.SanJose1.Level3.net] has joined #tunes if i'm not mistaken, t is pretty close to the root of the type hier-archy i thought it used functions that returned keywords though i could be #t and #f that's scheme... water: IIRC in Lisp everything is true but #f oh disgusting water: doh. nil, i meant well, it doesn't require a black-box to express :) i can't believe i've touched such a language #t/#f is scheme, t/nil is lisp * water/#tunes prepares to give LispWorks the boot water: well, it makes sense to a certain degree no it doesn't it takes formal logic and screws it all up i.e. it's something you could implement did you not have a black-box... water: insofar as you can test something for truth and then do something with it if it's true especially type theory water: well, lisp isn't really the lambda calculus. :) dude screw that lisp can go fsck itself eh * eihrul/#tunes shrugs. lisp is better than most stuff well, black-box or inheritance doesn't really matter either one works so? logic is important especially typing not worth arguing if you just want black-box already :) water: i still don't see how it's a major hindrance to "normal" programming. well normal programming is crappy anyway water: at this point i'm settling for stuff that's better than C and its dialects washort: you do that and shush about lisp water: how so? 08:20pm water: not that i'm disagreeing :) shush i don't care water: lisp is better than C & friends. i'm not claiming it's perfect, definitely hm maybe i wasn't clear i don't fscking care ok. i'm not disagreeing i just don't give a rat's patootie water: okay... where were we? heh. i appreciate that position primitives as in "did we cover all the important ones?" write a program in slate... using only those primitives :) yeah whatever that'd be as fun as writing self using bytecodes well... it's to identify any conspicuously absent primitives... and you'd need an image anyway well we don't need primitives precisely right now, we just need a working evaluator and i see no problem with the current set that i specified so, put it on ze page... why don't you do it? short-term memory... oh great it doesn't like arguments about true/false breaking the flow of discussion yet another project i am sole maintainer of hey.... what does the title say on the members list? :) maybe i should volunteer you ;) i'm r&d and manager, dude yes, but then you'll critize what i do put up... guarenteed :) true enough you're pretty clueless about oo :) not quite you keep thinking that :) you keep thinking that :) 08:30pm you little non-existent mental construct... Both of you keep thinking that! ;) well, you're the one who didn't grok smalltalk control structures :) no or lack thereof i never said i didn't i've just never paid close attention to how smalltalk implemented them you shouldn't have needed to ;) not knowing one thing does not mean a deficiency in knowing everything else associated with it... whatever, get back to bizness you'd be surprised... it's like an assumption well, you don't know what color underwear i'm wearing therefor, you're clueless about everything! :P um i don't care eihrul: are you going to code or not?!? water: r u gonna code? are you going to update the specs or not?!? -:- SignOff washort: #TUNES (Ping timeout for washort[d137.narrowgate.net]) you know what the specs are chances are, i'll forget minute details it's nice to have them so what? just write something well, would you mind re-enumerating the primitives? :) so that i can keep a TODO list... screw the primitives, just an evaluator will do until i post the list well, we have just an evaluator... look shut up i'm trying to get a lot of writing and reading done the semantics page needs a near-total rewrite, and the other pages need updating to this isn't just a matter of tacking on paragraph-after-paragraph 08:40pm -:- SignOff ult: #TUNES (Leaving) -:- water [water@tnt-9-239.tscnet.net] has left #tunes [] -:- SignOff eihrul: #TUNES (Leaving) -:- SignOff lar1: #TUNES (Ping timeout for lar1[dialup-209.244.107.211.SanJose1.Level3.net]) -:- SignOff hcf: #TUNES (Leaving) -:- water [water@tnt-9-239.tscnet.net] has joined #tunes -:- rares [rares@wtrb-sh3-port95.snet.net] has joined #tunes hey hi curious about something: good :) the object metaphor is limiting i'd qualify that, but ok now you talked about functional programming i did there's some opportu nities for a really versatile saystem here's my idea: (if it works) when you create an object you have sltos that make up the tangible object you have behaviours that make up the meta object could those go into a pool of some sort 10:50pm the meta-behaviors in the bmo? bmo? behavioral meta-object DOH! yes, to some extent it would be nice to be able to just do that in general but you really can't unless you're really that good well most language meta-behavior functionality will be in one bmo... Top because you can have an object with the same shape (list of slots) yet have perform better behaviourally with the same data 'pooling' is done by shared parents billions of ways to do the same thing um not quite the list of slots includes behavior not just data otherwise it's not an oop object :) i'd love it to be true i'm just not sure yet but let's supposae it's true suppose what's true? i'm concerned about those case where certain things in object heirarchies are in just enough different places to make it difficult to build a clean interface though that's the result of bassd designers what the hell are you talking about? suppose we could just pool those behaviours do you have an example language we could discuss? this is too abstract for me to address then the following would be possible: (incidentally I don't it was somethinng that nagged me in my sleep) are you listening to me? yes what the hell are you talking about, then? here's my example -:- SignOff air: #TUNES (http://www.qzx.com/ :: sleep) * water/#tunes thinks rares doesn't grok something very fundamental to oo with pooled behaviours: you write an interface for a console you never again have to rewrite that interface if later you need it for voice or GUI or what have you 11:00pm and? the point is it intelligently routes information and new behaviours where they have to go what does? the system built out of slate objects have you used smalltalk at all? no I haven't I have a hecl of a lot of catching up to do I klnow C/C++, Java and Lisp you can run objects dynamically regardless of the interface chosen I got stuck in Windows for 3 years slick :) squeak for example runs on 12 different oses at least bit-identically gah monpolies well anyway, smalltalk already handles most of what you understand about slate and self handles it too, only in better ways so what you want to do is make a cleaner more robust design yes with a nice visual syntax for the language to build a gui out of i'm just astounded how many different projects are trying to pull it off heh most are just experimental somebody capable of marketing this stuff could make millions :) lol maybe 11:10pm which pisses me off at most companies even mpore it's not the lack of a market that makes them short sided it's greed most people wouldn't know what to do with such a system, though oh and btw, slate means nothing without mobius mobius being (I'm still trying to grok how they work together) the slate compiler written in slate as well as the implementation libraries as mobius modules that way you can adapt the implementation a bit btw, the problem with most of the usual experiments in this category is speed, just as in java you know you're going to have to use C for the first compile then you can use mobius to recompile mobius of course i hate that too much reflectionlessness for my taste well c's the standard no i hate the seeming catch 22 it's manly, even :) real programmers don't use smalltalk :) real programmers have real jobs which is to spit out the same old real crap hence VB heh I'm beginning to make sense out of the TM, SIM, MIM theory (thx for the paper) that's the only language they let me use at work i feel your pain man but then, i'm not employed as a programmer (otoh i am the only programmer there) it's military crap I tried for a month to get Access 2000 to do what I need for my mom's pharmacy no fscking way :( it's not that bad just a lot of pouring through the manuals the problem is you need a form for every little shit you do which is completely lame but oh well yes i know because Accesss is forever in Edit mode heh I setup a customer + visit subform interface for her to be able to get names from a combo box? You'd think I was speaking chinese... thew thing would not take 11:20pm I was ready to do my ownb thing but I'm not administering MS products for another day more much more important thi ngs out there tried zope? it's html-based (intranet) but pretty powerful afaik I wanted to the MicroExperts revolted at the mention of any non ASP tool so I'm forced leave my poor mother to the wolves what reasons did they give? It's got custom tabs and it does everything automatically and you can do all dsorts of cool things and it has many properties you'd never learn in a lifetime and... heh I mean all it would take is a heirchial version of their event model and Access would work but no. iow features yeah it's got doohickeys heh but now I've got a mission: what about visual age by ibm? never got that far k i shall never again mix unix w/ family i'll just enjoy it alone so wsup what have you been thinking up slate stuff mostly oh namespaces for one -:- SignOff thomas: #TUNES (Ping timeout for thomas[193.217.63.152]) -:- thomas [thomas@193.217.63.152] has joined #tunes every object acting as a container/namespace for its slots ah yes the single stack (sounds like a geek romance sitcom) 11:30pm it makes for very interesting ideas -:- smoke [smoke@16dyn193.delft.casema.net] has joined #tunes if slate ever becomes an os i already know how the file system will work i'm ready to bet it would workpon its own well i need to make sure the spec is done right before starting implementation fully the coolest innovation to pull off would be to do to filesystems what the amiga design did to dive handling device handling even what's that? in the Amiga you can run six different types of processors with abvsolutely no driver hassles because the thing is designed to be a presentation machine PPC, x86, m68k, MIPS... it's bizarre what does presentation machine mean? presentatation machine means: it doesn't think it acts it does very little processing it just routes everything that's what's wrong with AI sciences thesedays they focus on thinking which is supposed to be for training instead of powerful design sometimes I feel like the Amiga passed through the Big Bang, the Expansion, The Contraction, and Big Crunch stages of its history without anyone noticing the last thing your OS should do is think thought is slllllllllooooooooooooow 11:40pm Virtual Memory for example horrid performance hit rares: it comes as an option. yeah I know but buggy programmers don't come as an option see all programs are perfe ct they just have buggy programmers 11:50pm weel I gotta go see yall :) -:- rares [rares@wtrb-sh3-port95.snet.net] has left #tunes [Segmentation] [msg(TUNES)] newlog 2000.0218 IRC log ended Fri Feb 18 00:00:01 2000