<daviid>generic functions with multi-method dispatch is a [better] module system. we need both [no news here, see clos and how it interacts with the cl package system] to keep modularity for all but goops programming. all i am saying is that guile should and would benefit from offering what I said above as an optional goops/module system way to 'cooperate'. as a matter of fact, that's what guile-gnome does in its internals <ijp>it is not a better module system, since it is not a module system at all <ijp>module systems are about control of which identifiers are visible <ijp>multi-method dispatch is irrelevant to that <ijp>for instance, goops has no way of modularly organising macros <daviid>you don't need vibility control generic functions with multi-method dispatch <ijp>going further, *it can't* <ijp>you don't seem to understand the problem, let alone the solutions <ijp>daviid: consider two different pieces of code; one related to animals, one related to instant messaging <ijp>we might want a "speak" function in both, but that take vastly different options <ijp>overloading the two because they use the same name would be a mistake <daviid>then you don't use goops in this case, probably <ijp>second, if I use an internal name "foo", and you use an internal name "foo", your method means the two will have to clash <ijp>three, with first class objects I can use lexical scoping to prevent others from interfering with internal structure. I cannot do this with macros, hence modules need to be higher level than macros <daviid>you don't give intrnal functions the same name as your methods <ijp>i.e. you don't have a solution <ijp>lexical scoping is all about names, and how they *don't* matter <ijp>this is a central tenet of scheme from 1975 onwards <ijp>it's why every good scheme has developed a module system and they all work in basically the same way <daviid>yes, no news cl package system(s) do that too, we need both <daviid>but you don't want the module system to interact with generics and its methods <ijp>daviid: how can I determine statically that a name is bound to a generic? <daviid>by implementation: they all call define-generic [or define-generic is called] so you can track can't you? <daviid>otherwize how you er 'merge-them? <daviid>i mean the actual option 'merge-generics also has to know... <ijp>(define-generic foo) (define bar foo) <ijp>so generics can only go into your special namespace if they are toplevel <ijp>and then you can set! those and get a normal variable, which suddenly wouldn't be treated specially? <daviid>(define bar foo) would be a serious programming mistake, why would you <ijp>daviid: it's a placeholder for more complicated, but possibly reasonable code <daviid>i have problem with my emacs irc buffer, playing games with me <ijp>generics are first class functions, and we may want to pass them in to other fucntions, return them from others, etc. etc. <ijp>as I said, generics are first class functions, we may want to pass them into other functions, return them from others, etc. <ijp>fine, applicable struct <daviid>i mean you can't possibly prohibit errors by language design <daviid>users will still need to learn how to program <ijp>then you've never heard of a static type system <ijp>you absolutely can prevent some types of errors by design <ijp>the point of all this, is that you want to introduce an extra namespace, which is a significant rethink of how scheme works <ijp>generics are no longer objects, but tied to particular identifers <ijp>that is a *huge* semantic change <ijp>otherwise, you have to accept that some generics variables in that namespace are not going to be generics, and some generics are not going to be in that namespace <daviid>ijp: we already provide all this through merge-generics and #:re-export <ijp>re-export is irrelevant <ijp>merge-generics has these problems, *but* it does not circumenvent the usual scheme way of doing things <daviid>fine. #:re-export is a problem. how about adding export-<whatevernamesuitall> for setter|getter|... <ijp>given what I have said, I think this is a significant, and unnecessary change, to guile, especially given the relative usage of the current module system and goops <ijp>you can disagree, and I don't control guile, so maybe you can even get it in <daviid>they can't be an error by adding a method to a generic function, write one for me. then, offering merge-generics and no mechanism for export behaving like re-export for methods is wrong <ijp>the first line is a non-sequitur <daviid>and yes i will try to get thses at least as options <ijp>it has nothing to do with anything I have said <ijp>daviid: why *reexport* and not just import from the original module? <daviid>didn't we? so i have my generic, as if it was 'in one space' <daviid>then i want export to add to that single generic <daviid>not hide it, as it is the case now <daviid>within a given module, there is a way to detect that it is a setter, getter, accessor and/or method right? <ijp>depending on what you mean by setter, I think yes/no/no/yes <daviid>then it should be added to the single [possibly merged] generic <ijp>daviid: what you want is a #:merge for export, similar to how we have #:replace ? <ijp><aside>which I also have issues with</aside> <daviid>ijp: i want the default behavior for exporting s,g,a,m being create a generic if does not exists then add the method to the generic <daviid>add the method to the imported generic if there is one <ijp>if the generic was imported, then methods should have been added to the generic <daviid>ijp: right now no, exactly a [trimendous] problem <daviid>even if you import, it will create a new generic and exporting it, hiding all existing previously defined methods <ijp>see, now this concern I can understand <daviid>ah great, thanks for your patience <daviid>it will only do his job according to what we've said if you use #:re-export <ijp>I'm heading off, but if you have a nice short example, I'll have a look tomorrow *taylanub has read all of the above, didn't really understand much, is curious <daviid>taylanub: try the goops tutorial and/or a clos tutorial <daviid>g-wrap, cairo, gnome and clutter are extensively using goops. in my opinion, clos [and therefore goops] is the best language layer ever invented by human beings ***chermobylae is now known as W-Crusher
<janneke>i would like to not (catch #t when running from the repl -- does that make sense? <janneke>something like: (catch (if (interactive) 'foobar #t) thunk <ijp>hmm, try batch-mode? <janneke>;;; <stdin>:4:0: warning: possibly unbound variable `batch-mode' <ijp>add the question mark <ijp>and it's a procedure <W-Crusher>I actually saw some post on you on a mailing list about forcing a quite option into guile that didn't give compilation messages when you run it as a shell script from 4 years back, did anything ever come from that? <wingo>nothing ever came of that, no <W-Crusher>Low on the priority list? Doesn't seem very hard to implement a command line flag that does that. <wingo>something like that, yes -- if you do it, do it by binding a null warning port <W-Crusher>wingo, do you believe that you should have a dramatic title. <W-Crusher>It does have quite the ring to it, doesn't it? <W-Crusher>Maybe "Lord Wingo, Supreme Commander of the Asgard Fleet." <wingo>best to keep expectations low :) <W-Crusher>Guido has "Benevolent Dictator for Life", that comes some-what close <W-Crusher>But still, it's not "Lord Guido I his Exalted one, DEfender of the Faith" <W-Crusher>Elizabeth II of England and Scotland has quite a few good oens. ***sethalves is now known as sethAway
<W-Crusher>do you believe more people should have dramatic titles? <ijp>for instance, should we refer to W-Crusher as Cadet? <W-Crusher>He actually quit starfleet to save some native Americans. ***sethAway is now known as seth_
***seth_ is now known as sethalves
<daviid>wingo: did you change the font for the core text [and top menu] in your blog? it is terrible :) [i don't like serif fonts, matter of taste i guess, but pages seems 'glairy' now, i can't read it more then a couple of minutes anymore :), like the official gnome api doc, unreadable :)] <taylanub>daviid: you could probably mock with your fontconfig to make serif fonts sans-serif :P <taylanub>(but the documentation for that thing is horrible IMO) <daviid>taylanub: i do that with iceweasel, but i mostly use epiphany and it does not offer that i couldn't find it anyway <fridim_>(I agree with daviid in the matter of taste, I think it's terrible)