* Around again, and docs lead role @ 2003-04-26 7:33 Neil Jerram 2003-04-26 10:19 ` Thamer Al-Harbash 2003-05-12 16:46 ` Around again, and docs lead role Max Techter 0 siblings, 2 replies; 28+ messages in thread From: Neil Jerram @ 2003-04-26 7:33 UTC (permalink / raw) Cc: Guile Users Sorry that I've been out of the loop for so long. I should soon have some time to contribute again. That said... is there anyone out there who'd be interested in taking over the lead role on Guile documentation? I have three reasons for asking this: - I don't expect to have a _lot_ of time for Guile soon, and the docs would benefit from someone with more time available. - I have other Guile interests that I'd like to spend some of that time on. - A new pair of eyes could take a fresh look at the higher-level doc issues such as overall organization, what kind of docs we need (e.g. the cookbook idea) etc. Any takers? (Whatever happens, I will still be involved in small ways like assessing and applying patches that people send in. I think there are a few such patches pending for some time, and hope to get to them soon.) Neil _______________________________________________ Guile-user mailing list Guile-user@gnu.org http://mail.gnu.org/mailman/listinfo/guile-user ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Around again, and docs lead role 2003-04-26 7:33 Around again, and docs lead role Neil Jerram @ 2003-04-26 10:19 ` Thamer Al-Harbash 2003-04-27 20:56 ` Neil Jerram [not found] ` <3E92E1B40021F4D7@pop3.tiscalinet.es> 2003-05-12 16:46 ` Around again, and docs lead role Max Techter 1 sibling, 2 replies; 28+ messages in thread From: Thamer Al-Harbash @ 2003-04-26 10:19 UTC (permalink / raw) Cc: Guile Development On Sat, 26 Apr 2003, Neil Jerram wrote: > Sorry that I've been out of the loop for so long. I should soon have > some time to contribute again. > > That said... is there anyone out there who'd be interested in taking > over the lead role on Guile documentation? My two cents: It's a two man job. We need one honest to goodness guile developer who has spent a fair amount of time writing the guile code (recently) actually write up a series of drafts, and one person to edit and make sure the documentation is readable. I'd be willing to do edit, review, and fill in the smaller parts. I know enough texinfo to do this comfortably. I don't think anyone but a developer should actually be writing the documentation. guile is a fairly complicated piece of software. -- Thamer Al-Harbash http://www.whitefang.com/ (if (> pressure too-much-pressure) 'flame 'work) _______________________________________________ Guile-user mailing list Guile-user@gnu.org http://mail.gnu.org/mailman/listinfo/guile-user ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Around again, and docs lead role 2003-04-26 10:19 ` Thamer Al-Harbash @ 2003-04-27 20:56 ` Neil Jerram [not found] ` <3E92E1B40021F4D7@pop3.tiscalinet.es> 1 sibling, 0 replies; 28+ messages in thread From: Neil Jerram @ 2003-04-27 20:56 UTC (permalink / raw) Cc: Guile Development >>>>> "Thamer" == Thamer Al-Harbash <tmh@whitefang.com> writes: Thamer> My two cents: Thamer> It's a two man job. We need one honest to goodness guile Thamer> developer who has spent a fair amount of time writing the guile Thamer> code (recently) actually write up a series of drafts, and one Thamer> person to edit and make sure the documentation is readable. Thamer> I'd be willing to do edit, review, and fill in the smaller Thamer> parts. I know enough texinfo to do this comfortably. I don't Thamer> think anyone but a developer should actually be writing the Thamer> documentation. guile is a fairly complicated piece of software. Hi Thamer, Thanks for this response. It's slightly at cross purposes to what I was intending, but I think that in itself highlights that we need a better overall picture of the current docs state, and an overall plan for how to finish them. More from me later in the week, but please feel free to contribute more of your own assessment and thoughts. Neil _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://mail.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 28+ messages in thread
[parent not found: <3E92E1B40021F4D7@pop3.tiscalinet.es>]
* Re: Around again, and docs lead role [not found] ` <3E92E1B40021F4D7@pop3.tiscalinet.es> @ 2003-04-27 21:01 ` Neil Jerram [not found] ` <3E92E1B4002B0632@pop3.tiscalinet.es> 0 siblings, 1 reply; 28+ messages in thread From: Neil Jerram @ 2003-04-27 21:01 UTC (permalink / raw) Cc: guile-devel >>>>> "Ricard" == Ricard Mira <ricardmm@tiscali.es> writes: Ricard> Thamer Al-Harbash wrote: >> I'd be willing to do edit, review, and fill in the smaller >> parts. I know enough texinfo to do this comfortably. I don't >> think anyone but a developer should actually be writing the >> documentation. guile is a fairly complicated piece of software. Ricard> I am learning Guile Scheme and don't know C, but I think I Ricard> could help keep the documentation understandable. Thanks Ricard; please see also my reply to Thamer. What are your views so far about the existing docs? (I'm finishing for a cold hard assessment here, not compliments.) Neil _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://mail.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 28+ messages in thread
[parent not found: <3E92E1B4002B0632@pop3.tiscalinet.es>]
* Re: Around again, and docs lead role [not found] ` <3E92E1B4002B0632@pop3.tiscalinet.es> @ 2003-04-30 22:47 ` Neil Jerram [not found] ` <3EAFE4EC000D9733@pop1.tiscalinet.es> 0 siblings, 1 reply; 28+ messages in thread From: Neil Jerram @ 2003-04-30 22:47 UTC (permalink / raw) Cc: guile-devel >>>>> "Ricard" == Ricard Mira <ricardmm@tiscali.es> writes: Ricard> Neil Jerram wrote: >> Thanks Ricard; please see also my reply to Thamer. What are your >> views so far about the existing docs? (I'm finishing for >> a cold hard assessment here, not compliments.) Ricard> IMHO, the overall organization of the documentation isn't Ricard> clear. But I know that documenting Guile is difficult, Ricard> because there are many different things to consider (C and Ricard> Scheme, Scheme and translated languages, applications and Ricard> Guile, etc.). Indeed. This also makes it difficult to assess the overall status of the docs, and in particular how close we are to being "finished". Ricard> I am thinking about these issues. That's great. I've been thinking about these over the last couple of days as well, but I'll save my half-formed thoughts for the moment so as not to prejudice yours. Ricard> Also, I believe that "Part V: Guile Modules" should Ricard> disappear, because features should be documented according Ricard> to their functionality, not according to their origin or Ricard> implementation (SLIB, SRFIs, etc.). Possibly yes. I think it might be useful to keep a dividing line between core Guile and available add-ons (e.g. SLIB and JACAL), but it may well be that the dividing line we have now is not in the right place. Bear in mind that in some mythical future there will be lots of Guile-using applications - already there are e.g. Gnucash, Lilypond, TeXmacs - that might provide useful library functions. I think it will be desirable at least to include pointers in the Guile manual to those applications' documentation, so we need somewhere to put those pointers. Best regards, Neil _______________________________________________ Guile-user mailing list Guile-user@gnu.org http://mail.gnu.org/mailman/listinfo/guile-user ^ permalink raw reply [flat|nested] 28+ messages in thread
[parent not found: <3EAFE4EC000D9733@pop1.tiscalinet.es>]
* Re: Doc organization (Re: Around again, and docs lead role) [not found] ` <3EAFE4EC000D9733@pop1.tiscalinet.es> @ 2003-05-07 21:06 ` Neil Jerram 2003-05-08 16:21 ` Rob Browning ` (2 more replies) 0 siblings, 3 replies; 28+ messages in thread From: Neil Jerram @ 2003-05-07 21:06 UTC (permalink / raw) Cc: guile-user >>>>> "Ricard" == Ricard Mira <ricardmm@tiscali.es> writes: Ricard> Thanks. I think that I need to learn more about Guile in Ricard> order to be able to propose something sound, but I can Ricard> give my opinion as a user. Ricard> As a user who is learning Scheme to customize and extend Ricard> Guile-using programs, I expect the Guile documentation to Ricard> contain a section for each programming language (C and Ricard> Scheme for sure; translated languages maybe). Then I need Ricard> to read just the Scheme section (and maybe also a general Ricard> introduction). Interesting. It was my idea to document the whole Guile API in the current unified way, covering both C and Scheme together, but I have been wondering about whether that was a good decision. In many cases it seems to result in adding a subsection saying "And there are also these related C functions and macros ...", which feels unsatisfactory. Ricard> Neil, are your half-formed thoughts the same as my Ricard> half-formed thoughts? :-) Not obviously, no, but it may be that there is some underlying overlap between them. My latest thinking is that we could be a lot more concrete, even proscriptive, about what Guile is for and how people should use it, and that if we did so it would be a lot easier to clearly assess the state of the documentation and to finish it off. (Right now, IMO, a it is difficult even to describe the documentation status.) Specifically, I think we should (**) promote doing as much programming as possible in Scheme, and restrict documentation of the C API to the parts needed for interfacing Scheme to C code. (To give a concrete example from another thread, I see no need for people to write C code that uses scm_internal_catch.) If we did this, I think the natural high level documentation structure would then be: - Scheme reference documentation - more or less like the current Part IV, but Scheme only, not C. - Task-based documentation describing everything needed for aspects of interfacing with C code: - writing and exporting primitives (in modules) - smobs, GC, lifetimes etc. - Guile initialization from within a library - how to call out to a Scheme-defined procedure - how to look up a Scheme-defined variable - how to evaluate user-supplied code and catch errors - (anything else that I've missed). Which has something in common with your thoughts. That's what I'm thinking now, anyway. I think (**) may be quite controversial, so that at least needs a lot more discussion first. Regards, Neil _______________________________________________ Guile-user mailing list Guile-user@gnu.org http://mail.gnu.org/mailman/listinfo/guile-user ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Doc organization (Re: Around again, and docs lead role) 2003-05-07 21:06 ` Doc organization (Re: Around again, and docs lead role) Neil Jerram @ 2003-05-08 16:21 ` Rob Browning 2003-05-08 17:50 ` rm ` (2 more replies) 2003-05-08 16:21 ` Max Techter 2003-05-09 8:15 ` tomas 2 siblings, 3 replies; 28+ messages in thread From: Rob Browning @ 2003-05-08 16:21 UTC (permalink / raw) Cc: guile-devel Neil Jerram <neil@ossau.uklinux.net> writes: > Specifically, I think we should (**) promote doing as much programming > as possible in Scheme, and restrict documentation of the C API to the > parts needed for interfacing Scheme to C code. (To give a concrete > example from another thread, I see no need for people to write C code > that uses scm_internal_catch.) I'm not sure how commonly this is an issue, but how hard would this be on people who are just writing C code (say perhaps for a shared lib or an object file that was intended to be used by apache (or whatever) as a dynamic module, i.e. mod_guile)? In particular, are there cases where it's hard to support having (finding) any .scm file, and if so, in those cases, what's the preferred solution -- embedded scheme strings that are evaled at runtime, or when you need something with more dynamic content, building the scheme form representing your function (or whatever) and then calling eval on that? I'm not sure this applies to scm_internal_catch, but just wanted to make sure we had thought about the likelihood of such a situation. > That's what I'm thinking now, anyway. I think (**) may be quite > controversial, so that at least needs a lot more discussion first. I think one counter argument would be "where do people who want to write C extensions to Guile go for documentation?". As an example, if you want to write a big complex smob for something that's a heterogeneous collection of both C and scheme data, you may well need to use any number of scm_* functions to manipulate the smob's data structures from the C side, and you'd certainly want to have documentation for those functions. If it weren't for the fact that it could be a lot of extra work (unless we could somehow automate much of the process), it seems like a solution would be to have one main section that was Scheme oriented, with a structure and composition similar to what you described, and one main section which was "Guile from the C side". Of course there would be a lot of duplicated text between the sections since, for example, you'd have to document scm_list_p and list? in separate sections with essentially the same text. -- Rob Browning rlb @defaultvalue.org, @linuxdevel.com, and @debian.org Previously @cs.utexas.edu GPG starting 2002-11-03 = 14DD 432F AE39 534D B592 F9A0 25C8 D377 8C7E 73A4 _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://mail.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Doc organization (Re: Around again, and docs lead role) 2003-05-08 16:21 ` Rob Browning @ 2003-05-08 17:50 ` rm 2003-05-08 22:47 ` Neil Jerram 2003-05-08 21:18 ` Wolfgang Jaehrling 2003-05-08 22:36 ` Neil Jerram 2 siblings, 1 reply; 28+ messages in thread From: rm @ 2003-05-08 17:50 UTC (permalink / raw) Cc: Neil Jerram THANKS, Rob! On Thu, May 08, 2003 at 11:21:12AM -0500, Rob Browning wrote: > Neil Jerram <neil@ossau.uklinux.net> writes: > > > Specifically, I think we should (**) promote doing as much programming > > as possible in Scheme, and restrict documentation of the C API to the > > parts needed for interfacing Scheme to C code. (To give a concrete > > example from another thread, I see no need for people to write C code > > that uses scm_internal_catch.) > > I'm not sure how commonly this is an issue, but how hard would this be > on people who are just writing C code (say perhaps for a shared lib or > an object file that was intended to be used by apache (or whatever) as > a dynamic module, i.e. mod_guile)? This is pretty much the position i'm in -- writing C extensions for Guile (currently Guile bindings for the neon http/WebDAV client library. Should be out as soon as Tomas made my crap working and recovered from RFC shock :) I myself (and probably many others) really need more information on the C side of Guile. A lot of if not most of my code deals with data conversion from Scheme <--> C and verso. Right now i'm looking for _the_ Guile way of converting a SCM real number to a C IEEE float (any help?). > In particular, are there cases where it's hard to support having > (finding) any .scm file, and if so, in those cases, what's the > preferred solution -- embedded scheme strings that are evaled at > runtime, now, that would be _really_ clumsy. > or when you need something with more dynamic content, > building the scheme form representing your function (or whatever) and > then calling eval on that? I'm not sure this applies to > scm_internal_catch, but just wanted to make sure we had thought about > the likelihood of such a situation. Even in my very humble attempts in coding i had to build/manipulate modules/environments from C. Evaluating user code in a save environment is absolutely neccessary as well a catching errors in user-provided Scheme code (callbacks, in the case of the neon bindings). > > That's what I'm thinking now, anyway. I think (**) may be quite > > controversial, so that at least needs a lot more discussion first. Not enough time to comment on that right now (but i have to admit that i hate it when languages try to be too pedagogic ...) > > I think one counter argument would be "where do people who want to > write C extensions to Guile go for documentation?". > As an example, if you want to write a big complex smob for something > that's a heterogeneous collection of both C and scheme data, you may > well need to use any number of scm_* functions to manipulate the > smob's data structures from the C side, and you'd certainly want to > have documentation for those functions. > > If it weren't for the fact that it could be a lot of extra work > (unless we could somehow automate much of the process), it seems like > a solution would be to have one main section that was Scheme oriented, > with a structure and composition similar to what you described, and > one main section which was "Guile from the C side". I thought a lot about this problem recently (unfortunately with no clear outcome :-/) Maybe a 3-book approach: - Guile for the scripter (user of an embedded Guile using application who want's to write scripts -- Scheme only). - Guile for the embedder/extender: people like my who write bindings or pplications that use Guile (focus on memory management and data conversion etc.). - Guile hacker: for people working on the Guile core. > Of course there would be a lot of duplicated text between the sections > since, for example, you'd have to document scm_list_p and list? in > separate sections with essentially the same text. Just my 0.002$ Ralf Mattes > -- > Rob Browning > rlb @defaultvalue.org, @linuxdevel.com, and @debian.org > Previously @cs.utexas.edu > GPG starting 2002-11-03 = 14DD 432F AE39 534D B592 F9A0 25C8 D377 8C7E 73A4 > > > _______________________________________________ > Guile-user mailing list > Guile-user@gnu.org > http://mail.gnu.org/mailman/listinfo/guile-user _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://mail.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Doc organization (Re: Around again, and docs lead role) 2003-05-08 17:50 ` rm @ 2003-05-08 22:47 ` Neil Jerram 0 siblings, 0 replies; 28+ messages in thread From: Neil Jerram @ 2003-05-08 22:47 UTC (permalink / raw) Cc: Rob Browning >>>>> "rm" == rm <rm@fabula.de> writes: rm> This is pretty much the position i'm in -- writing C rm> extensions for Guile (currently Guile bindings for the neon rm> http/WebDAV client library. Should be out as soon as Tomas rm> made my crap working and recovered from RFC shock :) I myself rm> (and probably many others) really need more information on the rm> C side of Guile. A lot of if not most of my code deals with rm> data conversion from Scheme <--> C and verso. Right now i'm rm> looking for _the_ Guile way of converting a SCM real number to rm> a C IEEE float (any help?). I'm afraid I don't know how to do this, but data conversion is definitely in the set of C API operations that I think should be documented. rm> Even in my very humble attempts in coding i had to build/manipulate rm> modules/environments from C. Evaluating user code in a save environment rm> is absolutely neccessary as well a catching errors in user-provided rm> Scheme code (callbacks, in the case of the neon bindings). Absolutely, but this is possible and much easier to do from Scheme, isn't it? >> > That's what I'm thinking now, anyway. I think (**) may be quite >> > controversial, so that at least needs a lot more discussion first. rm> Not enough time to comment on that right now (but i have to rm> admit that i hate it when languages try to be too pedagogic ...) But it isn't pedagogy just for the sake of it. I anticipate big benefits in documentation and elsewhere, e.g. in the management of updates between releases. rm> I thought a lot about this problem recently (unfortunately with no rm> clear outcome :-/) rm> Maybe a 3-book approach: rm> - Guile for the scripter (user of an embedded Guile using application rm> who want's to write scripts -- Scheme only). rm> - Guile for the embedder/extender: people like my who write bindings rm> or pplications that use Guile (focus on memory management and rm> data conversion etc.). rm> - Guile hacker: for people working on the Guile core. Yes, exactly, except that in practice the last of these may never happen - and that isn't actually so bad, because for core hacking you will probably need to read the code anyway. In fact, the best documentation for core hacking is probably extensive commenting in difficult areas of the source. rm> Just my 0.002$ Thank you! Neil _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://mail.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Doc organization (Re: Around again, and docs lead role) 2003-05-08 16:21 ` Rob Browning 2003-05-08 17:50 ` rm @ 2003-05-08 21:18 ` Wolfgang Jaehrling 2003-05-08 22:36 ` Neil Jerram 2 siblings, 0 replies; 28+ messages in thread From: Wolfgang Jaehrling @ 2003-05-08 21:18 UTC (permalink / raw) Cc: guile-devel On Thu, May 08, 2003 at 11:21:12AM -0500, Rob Browning wrote: > Of course there would be a lot of duplicated text between the sections > since, for example, you'd have to document scm_list_p and list? in > separate sections with essentially the same text. Maintaining redundancy is no fun. But I don't think it is necessary here, just generate both versions from the same input. (Preferably embedding the information in - and extracting it from - the source code.) Cheers, GNU/Wolfgang _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://mail.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Doc organization (Re: Around again, and docs lead role) 2003-05-08 16:21 ` Rob Browning 2003-05-08 17:50 ` rm 2003-05-08 21:18 ` Wolfgang Jaehrling @ 2003-05-08 22:36 ` Neil Jerram 2003-05-09 2:23 ` Rob Browning 2 siblings, 1 reply; 28+ messages in thread From: Neil Jerram @ 2003-05-08 22:36 UTC (permalink / raw) Cc: guile-devel >>>>> "Rob" == Rob Browning <rlb@defaultvalue.org> writes: Rob> Neil Jerram <neil@ossau.uklinux.net> writes: >> Specifically, I think we should (**) promote doing as much programming >> as possible in Scheme, and restrict documentation of the C API to the >> parts needed for interfacing Scheme to C code. (To give a concrete >> example from another thread, I see no need for people to write C code >> that uses scm_internal_catch.) Rob> I'm not sure how commonly this is an issue, but how hard Rob> would this be on people who are just writing C code (say Rob> perhaps for a shared lib or an object file that was intended Rob> to be used by apache (or whatever) as a dynamic module, Rob> i.e. mod_guile)? Well yes, this is exactly what we need to establish. But, to take mod_guile as an example, surely it's much easier to pass the whole page out to Scheme and process it there, than to do processing mostly in C? Rob> In particular, are there cases where it's hard to support Rob> having (finding) any .scm file, There probably are - for example embedded OSs with no filesystem - but I doubt that it is a priority to cater for them. To me, if defeats the whole object of Guile if catering for this case means that it is harder to improve Guile and its docs for the other 99% of cases. To avoid this happening, I suggest that we could solve this problem by a mechanism that links Scheme code into a library or executable at build time. This could be something like unexec (in which case the source would already have been read and stored in tree code), or it could be a linker tool that just dumps plain source code into the binary - as though it was a big const char[], but more convenient to use at build time. Rob> and if so, in those cases, what's the preferred solution -- Rob> embedded scheme strings that are evaled at runtime, or when Rob> you need something with more dynamic content, building the Rob> scheme form representing your function (or whatever) and then Rob> calling eval on that? Embedded Scheme is OK for small code fragments, otherwise as just suggested above. As far as dynamic content is concerned, is there any kind of dynamic Scheme content that can't be generated and then eval'd by a chunk of static Scheme code? (I don't think so, if it could be generated by a chunk of static C code.) Rob> I'm not sure this applies to scm_internal_catch, but just Rob> wanted to make sure we had thought about the likelihood of Rob> such a situation. Absolutely. What I've half-proposed is quite radical, so it's crucial to think it through carefully. To throw out another example: libguile currently has a set of old-fashioned primitives for manipulating object properties (scm_set_object_properties_x etc.). These should be deprecated in favour of the make-object-property mechanism, but it's currently hard to do this because the functions are part of the C API and so might be being used by someone's C code. If, on the other hand, these primitives were officially provided only on the Scheme level, it would be trivial to replace them with Scheme implementations written using make-object-property. >> That's what I'm thinking now, anyway. I think (**) may be quite >> controversial, so that at least needs a lot more discussion first. Rob> I think one counter argument would be "where do people who want to Rob> write C extensions to Guile go for documentation?". C extensions are covered by the documentation I've suggested, I believe. Specifically, that doc would describe how to write and export C primitives, validate and convert parameters between C and Scheme forms etc., how to create smobs, handle lifetime issues, ... Rob> As an example, if you want to write a big complex smob for something Rob> that's a heterogeneous collection of both C and scheme data, you may Rob> well need to use any number of scm_* functions to manipulate the Rob> smob's data structures from the C side, and you'd certainly want to Rob> have documentation for those functions. Absolutely. I think that data substructure manipulation functions like scm_cons, SCM_CAR and SCM_CDR, should be included in the documented C API. Rob> If it weren't for the fact that it could be a lot of extra work Rob> (unless we could somehow automate much of the process), it seems like Rob> a solution would be to have one main section that was Scheme oriented, Rob> with a structure and composition similar to what you described, and Rob> one main section which was "Guile from the C side". Now that I've been involved for some time, I'm pretty sure that any extra work will be insignificant compared to the long term cost of not having the right overall focus and structure. So I wouldn't worry about the work yet. Rob> Of course there would be a lot of duplicated text between the sections Rob> since, for example, you'd have to document scm_list_p and list? in Rob> separate sections with essentially the same text. True, but I think it might make sense in context anyway. Thanks for your thoughts, Neil _______________________________________________ Guile-user mailing list Guile-user@gnu.org http://mail.gnu.org/mailman/listinfo/guile-user ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Doc organization (Re: Around again, and docs lead role) 2003-05-08 22:36 ` Neil Jerram @ 2003-05-09 2:23 ` Rob Browning 2003-05-09 17:46 ` David Van Horn 2003-05-10 11:32 ` Neil Jerram 0 siblings, 2 replies; 28+ messages in thread From: Rob Browning @ 2003-05-09 2:23 UTC (permalink / raw) Cc: guile-devel Neil Jerram <neil@ossau.uklinux.net> writes: > To me, if defeats the whole object of Guile if catering for this case > means that it is harder to improve Guile and its docs for the other > 99% of cases. To avoid this happening, I suggest that we could solve > this problem by a mechanism that links Scheme code into a library or > executable at build time. This could be something like unexec (in > which case the source would already have been read and stored in tree > code), or it could be a linker tool that just dumps plain source code > into the binary - as though it was a big const char[], but more > convenient to use at build time. That could be interesting. To some extent how we decide to handle compilation will factor in here. If you thought large static scm fragments, were likely to be common, I guess one thing that might make hacking easier would be an easy way to do something equivalent to #include <foo.scm>, i.e. a way you could hack the scheme part as a scheme file, but then have the code end up incorporated in and evaled by the .so file. Of course I guess anyone could hack something like that up if they needed to with a makefile and appropriate use of "cat"... Actually, I've been playing around with code that would make something like this possible (as a dumb example): (define (double x) (c-syntax (if ("SCM_INUMP" x) (return (* x x)) (return ("scm_apply" ("scm_lookup" "+") x x))))) and that already works for (%function "main" int ((int argc) ((%array (* char)) argv)) ("printf" "Hello world\\n")) etc. (i.e. a C s-expression representation), but I'm not sure how likely it is that anyone else would find it amusing. I can think of a few possible uses for such a construction (g-wrap, auto-ffi, "c-side"-macros, scm-to-C-compiler-back-end, c equiv of inline-asm), but I'm still not sure it's really worthwhile. I might comment more later if I remain intrigued... > Embedded Scheme is OK for small code fragments, otherwise as just > suggested above. As far as dynamic content is concerned, is there any > kind of dynamic Scheme content that can't be generated and then eval'd > by a chunk of static Scheme code? (I don't think so, if it could be > generated by a chunk of static C code.) Not sure. As long as you're not limited to eval_str -- i.e. as long as you have eval_form, then perhaps not. > Absolutely. I think that data substructure manipulation functions > like scm_cons, SCM_CAR and SCM_CDR, should be included in the > documented C API. Sure, but I was wondering what else might be needed. Of course I'm not sure I have a clear idea of what kind of things might be omitted... > Now that I've been involved for some time, I'm pretty sure that any > extra work will be insignificant compared to the long term cost of not > having the right overall focus and structure. So I wouldn't worry > about the work yet. Focus is good. -- Rob Browning rlb @defaultvalue.org, @linuxdevel.com, and @debian.org Previously @cs.utexas.edu GPG starting 2002-11-03 = 14DD 432F AE39 534D B592 F9A0 25C8 D377 8C7E 73A4 _______________________________________________ Guile-user mailing list Guile-user@gnu.org http://mail.gnu.org/mailman/listinfo/guile-user ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Doc organization (Re: Around again, and docs lead role) 2003-05-09 2:23 ` Rob Browning @ 2003-05-09 17:46 ` David Van Horn 2003-05-10 11:32 ` Neil Jerram 1 sibling, 0 replies; 28+ messages in thread From: David Van Horn @ 2003-05-09 17:46 UTC (permalink / raw) Cc: Neil Jerram Rob Browning wrote: > Actually, I've been playing around with code that would make something > like this possible (as a dumb example): > > (define (double x) > (c-syntax > (if ("SCM_INUMP" x) > (return (* x x)) > (return ("scm_apply" ("scm_lookup" "+") x x))))) > > and that already works for > > (%function "main" int ((int argc) ((%array (* char)) argv)) > ("printf" "Hello world\\n")) > > etc. (i.e. a C s-expression representation), but I'm not sure how > likely it is that anyone else would find it amusing. I can think of a > few possible uses for such a construction (g-wrap, auto-ffi, > "c-side"-macros, scm-to-C-compiler-back-end, c equiv of inline-asm), > but I'm still not sure it's really worthwhile. I might comment more > later if I remain intrigued... Are you familiar with the Gambit-C FFI? This allows you to write, eg. (define fmod (c-lambda (double double) double "fmod")) Type checking and conversion are done for you. I think it's a rather nice tool. Gambit-C: Interface to C http://www.iro.umontreal.ca/~gambit/doc/gambit-c.html#SEC27 PLT Scheme supports a subset of this, namely `c-lambda' and `c-declare'. MzScheme Compiler Manual: Foreign-Function Interface to C http://download.plt-scheme.org/doc/203/html/mzc/mzc-Z-H-2.html#%_chap_2 A Gambit-C style back-end to FFIGEN would be rather useful, especially if three Schemes supported the emitted code. I believe there has been some work done to this end, but I can't seem to find mention of it beyond the to-do list of FFIGEN. FFIGEN http://www.ccs.neu.edu/home/lth/ffigen/ -d _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://mail.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Doc organization (Re: Around again, and docs lead role) 2003-05-09 2:23 ` Rob Browning 2003-05-09 17:46 ` David Van Horn @ 2003-05-10 11:32 ` Neil Jerram 2003-05-15 16:02 ` Rob Browning 1 sibling, 1 reply; 28+ messages in thread From: Neil Jerram @ 2003-05-10 11:32 UTC (permalink / raw) Cc: guile-devel >>>>> "Rob" == Rob Browning <rlb@defaultvalue.org> writes: Rob> Neil Jerram <neil@ossau.uklinux.net> writes: >> To avoid this happening, I suggest that we could solve this >> problem by a mechanism that links Scheme code into a library or >> executable at build time. This could be something like unexec >> (in which case the source would already have been read and >> stored in tree code), or it could be a linker tool that just >> dumps plain source code into the binary - as though it was a >> big const char[], but more convenient to use at build time. Rob> That could be interesting. To some extent how we decide to Rob> handle compilation will factor in here. Yes. Rob> If you thought large static scm fragments, were likely to be Rob> common, I guess one thing that might make hacking easier Rob> would be an easy way to do something equivalent to #include Rob> <foo.scm>, i.e. a way you could hack the scheme part as a Rob> scheme file, but then have the code end up incorporated in Rob> and evaled by the .so file. Of course I guess anyone could Rob> hack something like that up if they needed to with a makefile Rob> and appropriate use of "cat"... #include <foo.scm> would be very nice, but we'll probably need something more dynamic as well. I don't see what you mean by cat though. Rob> Actually, I've been playing around with code that would make something Rob> like this possible (as a dumb example): Rob> (define (double x) Rob> (c-syntax Rob> (if ("SCM_INUMP" x) Rob> (return (* x x)) Rob> (return ("scm_apply" ("scm_lookup" "+") x x))))) I don't see how this helps - please explain. Rob> Sure, but I was wondering what else might be needed. Of course I'm Rob> not sure I have a clear idea of what kind of things might be Rob> omitted... I don't have a very clear idea myself yet. The main category in my mind so far is almost all primitives - e.g. scm_catch, scm_setgid, scm_set_object_properties_x - some exceptions being those concerned with dissecting and constructing data - e.g. scm_cons, scm_list_p, SCM_CAR, scm_vector. Regards, Neil _______________________________________________ Guile-user mailing list Guile-user@gnu.org http://mail.gnu.org/mailman/listinfo/guile-user ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Doc organization (Re: Around again, and docs lead role) 2003-05-10 11:32 ` Neil Jerram @ 2003-05-15 16:02 ` Rob Browning 2003-05-15 16:33 ` Paul Jarc 0 siblings, 1 reply; 28+ messages in thread From: Rob Browning @ 2003-05-15 16:02 UTC (permalink / raw) Cc: guile-devel Neil Jerram <neil@ossau.uklinux.net> writes: > Rob> hack something like that up if they needed to with a makefile > Rob> and appropriate use of "cat"... > > #include <foo.scm> would be very nice, but we'll probably need > something more dynamic as well. I don't see what you mean by cat > though. I hadn't thought very hard about it, but I meant that instead of #include <foo.scm> in file foo.c (which would still require some non-scheme code in foo.scm) you could do something primitive like this: foo-real.c: foo-pre.c foo.scm foo-post.c cat foo-pre.c > foo-real.c.tmp echo 'startup_eval_code = "' >> foo-real.c.tmp cat foo.scm >> foo-real.c.tmp echo '";' >> foo-real.c.tmp cat foo-post.c >> foo-real.c.tmp mv foo-real.c.tmp foo-real.c very ugly, of course (really too ugly), but something that could be done right now. I suppose you could also use perl, sed, etc. with similar effect. > Rob> Actually, I've been playing around with code that would > Rob> make something like this possible (as a dumb example): > > Rob> (define (double x) > Rob> (c-syntax > Rob> (if ("SCM_INUMP" x) > Rob> (return (* x x)) > Rob> (return ("scm_apply" ("scm_lookup" "+") x x))))) > > I don't see how this helps - please explain. Well in one possible approach you'd be able to write a file that contained both scheme and this "inline C" code. That file would then be compiled to object code via C. In that arrangement, you wouldn't need a separate file or a giant unwieldy C string for any large embedded Scheme fragments. i.e. as a psuedo-example: (define (show-c-+ x y) (simple-format #t "In C (+ ~A ~A) would yield ~A\n" x y (c-style-int-+ x y))) (define (c-style-int-+ x y) (c-syntax (auto int c_x ("scm_num2int" 1 x %function-name)) (auto int c_y ("scm_num2int" 1 y %function-name)) (return ("scm_int2num" (+ c_x c_y))))) Of course that's not the primary reason I've been playing around with this, but it's another effect. -- Rob Browning rlb @defaultvalue.org, @linuxdevel.com, and @debian.org Previously @cs.utexas.edu GPG starting 2002-11-03 = 14DD 432F AE39 534D B592 F9A0 25C8 D377 8C7E 73A4 _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://mail.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Doc organization (Re: Around again, and docs lead role) 2003-05-15 16:02 ` Rob Browning @ 2003-05-15 16:33 ` Paul Jarc 0 siblings, 0 replies; 28+ messages in thread From: Paul Jarc @ 2003-05-15 16:33 UTC (permalink / raw) Cc: Neil Jerram Rob Browning <rlb@defaultvalue.org> wrote: > echo 'startup_eval_code = "' >> foo-real.c.tmp > cat foo.scm >> foo-real.c.tmp > echo '";' >> foo-real.c.tmp Just to be pedantic: echo 'char const startup_eval_code[] = "\' >> foo-real.c.tmp sed 's/\(["\\]\)/\\\1/g;s/$/\\n\\/' < foo.scm >> foo-real.c.tmp echo '";' >> foo-real.c.tmp paul _______________________________________________ Guile-user mailing list Guile-user@gnu.org http://mail.gnu.org/mailman/listinfo/guile-user ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Doc organization (Re: Around again, and docs lead role) 2003-05-07 21:06 ` Doc organization (Re: Around again, and docs lead role) Neil Jerram 2003-05-08 16:21 ` Rob Browning @ 2003-05-08 16:21 ` Max Techter [not found] ` <3EB9828B00021495@pop1.tiscalinet.es> 2003-05-08 22:57 ` Neil Jerram 2003-05-09 8:15 ` tomas 2 siblings, 2 replies; 28+ messages in thread From: Max Techter @ 2003-05-08 16:21 UTC (permalink / raw) Cc: guile-devel Neil Jerram <neil@ossau.uklinux.net> writes: > >>>>> "Ricard" == Ricard Mira <ricardmm@tiscali.es> writes: > > > Ricard> As a user who is learning Scheme to customize and extend > Ricard> Guile-using programs, I expect the Guile documentation to > Ricard> contain a section for each programming language (C and > Ricard> Scheme for sure; translated languages maybe). Then I need ^^^^^^^^^^^ > Ricard> to read just the Scheme section (and maybe also a general ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > Ricard> introduction). ^^^^^^^^^^^^^^^^^^^^^ snip What about a tutorial, Ricard? Hi, I am new to guile, my name is max. I came across guile, when I gathered information about: What makes up a GNU Package. As I got it: The decision was and is: The GNU Glue, should be GUILE. Being interested in providing my own stuff to the GNU Project and/or in giving help to another GNU Package, I accepted the need to dive into GUILE. Thus I naturally had an eye on this thread about the need of restructuring and improving the documentation. > My latest thinking is that we could be a lot more concrete, even > proscriptive, about what Guile is for and how people should use it, > and that if we did so it would be a lot easier to clearly assess the > state of the documentation and to finish it off. > (Right now, IMO, it is difficult even to describe the > documentation status.) My first impression was: Oops... such an important project, but obviously abandoned... The documentation is one of the first important impressions a (potential) user gets. I typically look out for a tutorial, immediately after installation. Not to learn, but to find out: is this something for me? > > Specifically, I think we should (**) promote doing as much programming > as possible in Scheme, Yeah. > and restrict documentation of the C API to the > parts needed for interfacing Scheme to C code. snip Yeah. > , I think the natural high level documentation structure > would then be: > I am missing, things like: * Tutorial * Introduction ** Background, History ** Advantages ... Basic Concepts, or whatever * Rational / Advocacy ** nothing you can`t do with lisp like languages, ** hackable, short path to C ** scientific background * GOOPS (proof of the `nothing you can`t do statement) * R5RS * Other freely available or even included documentation (Some of these sections need not be high volume but they serve important purposes.) > - Scheme reference documentation - more or less like the current Part > IV, but Scheme only, not C. > - Task-based documentation describing everything needed for aspects of > interfacing with C code: Task based structuring the meat of the documentation is an idea I like, Neil. That`s what we use software for: Solving Tasks (beside for having incredible fun, of cause =:) > - writing and exporting primitives (in modules) > - smobs, GC, lifetimes etc. > - Guile initialization from within a library > - how to call out to a Scheme-defined procedure > - how to look up a Scheme-defined variable > - how to evaluate user-supplied code and catch errors > - (anything else that I've missed). > Which has something in common with your thoughts. > > That's what I'm thinking now, anyway. I think (**) may be quite > controversial, > so that at least needs a lot more discussion first. Here we are... regards max. _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://mail.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 28+ messages in thread
[parent not found: <3EB9828B00021495@pop1.tiscalinet.es>]
* Re: Doc organization (Re: Around again, and docs lead role) [not found] ` <3EB9828B00021495@pop1.tiscalinet.es> @ 2003-05-08 21:12 ` Max Techter 2003-05-27 2:02 ` Max Techter 0 siblings, 1 reply; 28+ messages in thread From: Max Techter @ 2003-05-08 21:12 UTC (permalink / raw) Cc: guile-devel Ricard Mira <ricardmm@tiscali.es> writes: > Max Techter wrote: > > What about a tutorial, Ricard? > > There is already a Guile tutorial, but it's quite incomplete. On the > other hand, it seems that most of the material in parts I, II and III > of the Guile reference manual are introductory. > I agree on this. But IMHO a tutorial and an introduction is definitely not an exclusive alternative. > I guess it's not clear yet whether Guile should have a separate > tutorial, or an introductory section (or some introductory sections) > in the reference manual. > Sure. Anyway, keeping a tutorial separated and on a different level(*) is a good idea. (Same principle as in python documentation). (*) concerning what you suppose about the knowledge of the audience, you are aiming at; concerning what you want to communicate,... If you keep the tutorial (which) should be practical, the whirlwind tour should be theoretical. Introductory stuff should be kept formal. Tutorial may be informal, if necessary even a little bit unprecise, but it has to get you going immediately. We should not bother too much about the structure already there, if it is clear that there has to be done some restructuring. There are well known principles how to document a system. ( And a standalone- (python), or integrated-tutorial (bison) is a good ingredient for the doc of every non trivial system) ;-) The problem is not so much in finding a suitable structure but in writing and maintaining, without washing the structure away again. Keeping the proportions is a problem too, but we do not have to bother about this, now. ( The work already done, is a fine prototype. We may infer the structure needed, from the problems this documentation posed. ). Maybe I underestimate the complexity, of the needed guile documentation. I`ll try to work out a proposal. I am engaged in scheme and guile anyway, and this will force me to have a structured go. (Guess I`ll need =< a fortnight) regards max. _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://mail.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Doc organization (Re: Around again, and docs lead role) 2003-05-08 21:12 ` Max Techter @ 2003-05-27 2:02 ` Max Techter 0 siblings, 0 replies; 28+ messages in thread From: Max Techter @ 2003-05-27 2:02 UTC (permalink / raw) Cc: guile-devel Max Techter <mtechter@gmx.de> writes: > Ricard Mira <ricardmm@tiscali.es> writes: > > > Max Techter wrote: > > > What about a tutorial, Ricard? > > > > There is already a Guile tutorial, but it's quite incomplete. snip [some arguments concerning tutorials snipped away] > We should not bother too much about the structure > already there, if it is clear that there has to be > done some restructuring. > > There are well known > principles how to document a system. > ( And a standalone- (python), > or integrated-tutorial (bison) is a good ingredient for > the doc of every non trivial system) ;-) > > The problem is not so much in finding a suitable > structure but in writing and maintaining, without > washing the structure away again. > Keeping the proportions is a problem too, but > we do not have to bother about this, now. > > ( > The work already done, is a fine prototype. > We may infer the structure needed, from the > problems this documentation posed. > ). > > > Maybe I underestimate the complexity, of the needed > guile documentation. > > I`ll try to work out a proposal. > I am engaged in scheme and guile anyway, > and this will force me to have a structured go. > > (Guess I`ll need =< a fortnight) > I have to correct myself here. It should have been (Guess I`ll need >= a fortnight) Anyway, the work I promised to do is underway. Although I will not propose a ready made lay out. I`ll propose s.th. that is more like a process for getting a documentation design. What I did is s.th. like a documentation domain analysis. This takes shape right now. That is: A Domain Dictionary has been initialized. We need this for discussion. And then `The Guile Documentation Domain Dictionary' may serve for feeding the Glossary in the end. Use Cases are localized (They answer the question who, in which state, will consult which part of the documentation to find what) Some thought on dichotomies was spent: policy-mechanism concept-example etc. Important Documentation Patterns have been collected introduction-main-conclusion concept-example subtypes are: leading-example subsequent-example interleaved-example tutorial how to read this manual site-map elaboration abstract bold vision history etc As soon as GNU documentation guide lines are reached I`ll go public. I cannot go beyond this point without your sayings! Hopefully this procedure will naturally evolve into a process which extends to part of the guile community and specializes to Guile Documentation. My understanding of documentation development has been extended by doing these preparations. So the work done so far was at least valuable for me. Soon I call again, about those documentation issue ... (The promised `commented manual' is underway too). regards max. PS: * Some people say I tend to over analyze, but I doubt the thoroughness of their analysis ;-) * The whole `Guile (based on Scheme) concept' leaves me standing openmouthed, and I am wondering a) how it could happen that nobody pushed me into lisp/scheme before. b) why the project has not been mentioned in work dear to me eg. `Generative Programming' by Czarnecki and Eisenecker or Coplien`s `Multi-Paradigm Design', Thesis ( Maybe I overestimate the guile potential, but I constantly get this "whoop, you can do this and then you could do that" rush when working on scheme or guile. Time will tell... ) c) how it can be that some people, Stallman and others, are thus farsighted (includes the elisp choice). d) ... _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://mail.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Doc organization (Re: Around again, and docs lead role) 2003-05-08 16:21 ` Max Techter [not found] ` <3EB9828B00021495@pop1.tiscalinet.es> @ 2003-05-08 22:57 ` Neil Jerram 2003-05-09 12:32 ` Max Techter 1 sibling, 1 reply; 28+ messages in thread From: Neil Jerram @ 2003-05-08 22:57 UTC (permalink / raw) Cc: guile-devel >>>>> "Max" == Max Techter <mtechter@gmx.de> writes: >> My latest thinking is that we could be a lot more concrete, even >> proscriptive, about what Guile is for and how people should use it, >> and that if we did so it would be a lot easier to clearly assess the >> state of the documentation and to finish it off. >> (Right now, IMO, it is difficult even to describe the >> documentation status.) Max> My first impression was: Max> Oops... Max> such an important project, but obviously Max> abandoned... I don't see how you can conclude that the project is abandoned when we're right in the middle of a thread about it .... Max> I typically look out for a tutorial, immediately Max> after installation. Not to learn, but to find out: Max> is this something for me? Did you look at the Guile Tutorial? How would you improve it? >> , I think the natural high level documentation structure >> would then be: >> Max> I am missing, things like: [...] I agree, and some of these pieces are already in place - see the Guile Reference manual. But I was really focussing on the issue of Scheme and C API documentation in my last message. >> - Scheme reference documentation - more or less like the current Part >> IV, but Scheme only, not C. >> - Task-based documentation describing everything needed for aspects of >> interfacing with C code: Max> Task based structuring the meat of the documentation Max> is an idea I like, Neil. Max> That`s what we use software for: Max> Solving Tasks Max> (beside for having incredible fun, of cause =:) OK, but given a general purpose language like Scheme, there's a limit to how fully you can document it in a task-based way. For Scheme you need a combination of reference documentation and examples. The C API on the other hand - at least as I think we should see it - is not general purpose. It has the specific job of interfacing C to Scheme and so can be fully covered in a task-based way. Thanks for your thoughts, Neil _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://mail.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Doc organization (Re: Around again, and docs lead role) 2003-05-08 22:57 ` Neil Jerram @ 2003-05-09 12:32 ` Max Techter 0 siblings, 0 replies; 28+ messages in thread From: Max Techter @ 2003-05-09 12:32 UTC (permalink / raw) Cc: guile-devel Neil Jerram <neil@ossau.uklinux.net> writes: > >>>>> "Max" == Max Techter <mtechter@gmx.de> writes: > > >> My latest thinking is that we could be a lot more concrete, even > >> proscriptive, about what Guile is for and how people should use it, > >> and that if we did so it would be a lot easier to clearly assess the > >> state of the documentation and to finish it off. > > >> (Right now, IMO, it is difficult even to describe the > >> documentation status.) > > Max> My first impression was: > Max> Oops... > Max> such an important project, but obviously > Max> abandoned... > > I don't see how you can conclude that the project is abandoned when > we're right in the middle of a thread about it .... > I installed the guile package, had a look at the manual and at the tutorial before I subscribed and read the mailing list. > Max> I typically look out for a tutorial, immediately > Max> after installation. Not to learn, but to find out: > > Max> is this something for me? > > Did you look at the Guile Tutorial? Yes, I did. That`s what I do as one of my first steps, when exploring s.th. new to me. And this was part of the things that caused my _first_ and _wrong_ impression. Oops, abandoned. Important GNU Packages, have excellent doc, guile doc is not bad, but not excellent either. (although it is an important Package, as I got it now, and not abandoned... :-) > How would you improve it? > Too much to say about this, to be appropriate for this reply. I`ll tell you in a couple of days, more precisely. So far only this: As an example: There is a section Using recursion to process a list. Before anything was said about pairs, and lists, and the concept of the null in scheme. If this is an tutorial about scheme, you can`t ask the (potential) user, to take such a leap. You can do this in a preview, but not in a tutorial. Now if this is not a scheme tutorial, (the Title says `Guile tutorial'), there is no need to supply such an example, because it is a standard scheme construct. The problem is: the parts of the documentation seen as isolated pieces of knowledge, are good, though not complete. But being new to guile, and to scheme I had problems to grasp the context (and the rational). > >> , I think the natural high level documentation structure > >> would then be: > >> > > Max> I am missing, things like: [...] > > I agree, and some of these pieces are already in place - see the Guile > Reference manual. But I was really focussing on the issue of Scheme > and C API documentation in my last message. > Ok, obviously I missed your focus. That is because I am still struggling to get the big picture: The Algorithmic Language Scheme * GOOPS: (goops). The GOOPS reference manual. * Guile Reference: (guile). The Guile reference manual. * Guile Tutorial: (guile-tut). The Guile tutorial. * R5RS: (r5rs). The Revised(5) Report on Scheme. (slib is missing in my local installation, what else is missing?) > >> - Scheme reference documentation - more or less like the current Part > >> IV, but Scheme only, not C. > > >> - Task-based documentation describing everything needed for aspects of > >> interfacing with C code: > > Max> Task based structuring the meat of the documentation > Max> is an idea I like, Neil. > > Max> That`s what we use software for: > Max> Solving Tasks > Max> (beside for having incredible fun, of cause =:) > > OK, but given a general purpose language like Scheme, there's a limit > to how fully you can document it in a task-based way. > For Scheme you > need a combination of reference documentation and examples. > I agree. It is clear that this task-based way has advantages and has tight limits on the other hand. And may I add: Reference with short examples. Tutorial with intermediate examples, Introduction / Basic Concepts by the way, IMHO there should be a section * `Basic Concepts of Scheme' as there already is __and__ * `Basic Concepts of Guile' maybe the Whirlwind tour could be extended to such a section, and later on this extension could be boiled down again to an improved Whirlwind tour both with longer examples (like the one in `An Example of Non-Lexical Scoping' which helped me quite a lot, to dig one of the not so simple concepts.) > The C API on the other hand - at least as I think we should see it - > is not general purpose. > It has the specific job of interfacing C to > Scheme and so can be fully covered in a task-based way. > I am definitely not the one to comment on this, not yet ;-) regards max. PS: I would like to help in formulating the overall layout, and I am prepared to get my hands on real work, concerning the tutorials, if it is decided on having (or keeping) them. _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://mail.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Doc organization (Re: Around again, and docs lead role) 2003-05-07 21:06 ` Doc organization (Re: Around again, and docs lead role) Neil Jerram 2003-05-08 16:21 ` Rob Browning 2003-05-08 16:21 ` Max Techter @ 2003-05-09 8:15 ` tomas 2003-05-10 12:01 ` Neil Jerram 2 siblings, 1 reply; 28+ messages in thread From: tomas @ 2003-05-09 8:15 UTC (permalink / raw) Cc: guile-user On Wed, May 07, 2003 at 10:06:57PM +0100, Neil Jerram wrote: [...] > Interesting. It was my idea to document the whole Guile API in the > current unified way, covering both C and Scheme together, but I have > been wondering about whether that was a good decision. In many cases > it seems to result in adding a subsection saying "And there are also > these related C functions and macros ...", which feels unsatisfactory. There have been good answers to this elsewhere. As long as there is a (not necessarily exhaustive) good correspondence between C functions and Guile (with a way to know when to expect what), I'm fine. [...] > Specifically, I think we should (**) promote doing as much programming > as possible in Scheme, and restrict documentation of the C API to the > parts needed for interfacing Scheme to C code. (To give a concrete > example from another thread, I see no need for people to write C code > that uses scm_internal_catch.) [...] > That's what I'm thinking now, anyway. I think (**) may be quite > controversial, so that at least needs a lot more discussion first. To take the other side of the controverse ;-) There have been comments on this elsewhere already, mentioning mod-guile. I won't repeat those. What seemed missing to me (or I was asleep while reading, actually this happens .-) Embedding Guile in applications like Apache or PostgreSQL[1] poses some constraints: Guile won't be the only embedded language. Those applications bring along services for error handling, which you better use (e.g. aborting a transaction/erroring out in an HTTP request/response cycle), for consistency. So it might be most natural to catch errors at the C level. If that is not desirable from a Guile POV, then there should be at least a ``recommended canonical way'' (say: a C function calling a Guile wrapper calling...). And this might be provided as convenience library. But then, it could be provided in the first place :-) I'd even go a step further: for the embedded scripting language to play really nicely in those two cases, it'd be desirable to be able to adapt the garbage collector to the transaction-based memory model: much of the memory used just lives for a transaction, and that's why they allocate memory in `pools', which just disappear after the transaction is done. But this might be just wishful thinking... -------- [1] I'm talking of embedding Guile in the PostgreSQL server, not of a libpq interface _______________________________________________ Guile-user mailing list Guile-user@gnu.org http://mail.gnu.org/mailman/listinfo/guile-user ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Doc organization (Re: Around again, and docs lead role) 2003-05-09 8:15 ` tomas @ 2003-05-10 12:01 ` Neil Jerram 2003-05-12 11:40 ` tomas 0 siblings, 1 reply; 28+ messages in thread From: Neil Jerram @ 2003-05-10 12:01 UTC (permalink / raw) Cc: guile-user >>>>> "tomas" == tomas <tomas@fabula.de> writes: >> Interesting. It was my idea to document the whole Guile API in the >> current unified way, covering both C and Scheme together, but I have >> been wondering about whether that was a good decision. In many cases >> it seems to result in adding a subsection saying "And there are also >> these related C functions and macros ...", which feels unsatisfactory. tomas> There have been good answers to this elsewhere. As long as tomas> there is a (not necessarily exhaustive) good correspondence tomas> between C functions and Guile (with a way to know when to tomas> expect what), I'm fine. Not sure I understand. Are you saying that the relationship between how one codes a primitive in C, and how one calls it in Scheme, should be clearly described? If so, I agree. >> That's what I'm thinking now, anyway. I think (**) may be quite >> controversial, so that at least needs a lot more discussion first. tomas> To take the other side of the controverse ;-) tomas> There have been comments on this elsewhere already, mentioning tomas> mod-guile. I won't repeat those. What seemed missing to me (or tomas> I was asleep while reading, actually this happens .-) tomas> Embedding Guile in applications like Apache or PostgreSQL[1] poses tomas> some constraints: Guile won't be the only embedded language. Those tomas> applications bring along services for error handling, which you tomas> better use (e.g. aborting a transaction/erroring out in an HTTP tomas> request/response cycle), for consistency. So it might be most tomas> natural to catch errors at the C level. If that is not desirable tomas> from a Guile POV, then there should be at least a ``recommended tomas> canonical way'' (say: a C function calling a Guile wrapper tomas> calling...). And this might be provided as convenience library. tomas> But then, it could be provided in the first place :-) With ``recommended canonical way'' you've hit the nail on the head as far as I'm concerned. The main point of my whole argument is that there are currently no recommended ways of using Guile, and that makes it (i) jolly difficult to document - especially for more inexperienced developers (ii) difficult to clearly define the API and so manage API changes between releases. To consider your example ... Although it might be most immediately natural to catch and dispatch errors at the C level, I would recommend a ``canonical'' organization like this: (I'm assuming here that the basic operation of mod_guile is to translate a mod_guile HTML page into vanilla HTML) - Define primitives that wrap the applications' mechanisms for reporting errors. Now you can signal those errors from Scheme. - Define a Scheme procedure that does the whole translation operation: (translate-page INPUT) -> OUTPUT This procedure can signal application errors as/when it needs to. - From C, just call out to translate-page, and return its result to Apache. This may be a bit harder to begin with than writing everything in C. But once this structure is in place, your scope for rapidly adding further enhancements is much greater, because all the interesting code is in Scheme, not C. tomas> I'd even go a step further: for the embedded scripting language tomas> to play really nicely in those two cases, it'd be desirable to tomas> be able to adapt the garbage collector to the transaction-based tomas> memory model: much of the memory used just lives for a transaction, tomas> and that's why they allocate memory in `pools', which just disappear tomas> after the transaction is done. But this might be just wishful tomas> thinking... Sounds interesting, and maybe not too hard. Is the following possible? (let ((temp-heap (switch-to-new-heap))) ; This tell Guile's memory allocator to allocate a new heap ; and to make all memory allocations until further notice ; from this heap. (do-transaction-processing) ; During which all memory allocations come from the new heap. (gc-and-destroy-heap temp-heap) ; Perform a GC, assert that temp-heap now has nothing in use, ; destroy temp-heap and switch back to previous heap. ) Regards, Neil _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://mail.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Doc organization (Re: Around again, and docs lead role) 2003-05-10 12:01 ` Neil Jerram @ 2003-05-12 11:40 ` tomas 0 siblings, 0 replies; 28+ messages in thread From: tomas @ 2003-05-12 11:40 UTC (permalink / raw) Cc: guile-user On Sat, May 10, 2003 at 01:01:44PM +0100, Neil Jerram wrote: > >>>>> "tomas" == tomas <tomas@fabula.de> writes: [...] > Not sure I understand. Are you saying that the relationship between > how one codes a primitive in C, and how one calls it in Scheme, should > be clearly described? If so, I agree. Uh, sorry for my unclear wording. I meant to say that I don't see the need for repetition as long as there is a way to guess the C name and usage from the Scheme counterpart -- just document the exceptions. OTOH, having separate docs for C and Scheme would be OK; I guess the transformation might be script-supported. > >> That's what I'm thinking now, anyway. I think (**) may be quite > >> controversial, so that at least needs a lot more discussion first. > > tomas> To take the other side of the controverse ;-) [...] > With ``recommended canonical way'' you've hit the nail on the head as > far as I'm concerned. The main point of my whole argument is that > there are currently no recommended ways of using Guile, and that makes > it (i) jolly difficult to document - especially for more inexperienced > developers (ii) difficult to clearly define the API and so manage API > changes between releases. Yup. (In a way, it seems to be a fundamental Scheme characteristic, do-it-yourself everywhere ;-) > To consider your example ... Although it might be most immediately > natural to catch and dispatch errors at the C level, I would recommend > a ``canonical'' organization like this: (I'm assuming here that the > basic operation of mod_guile is to translate a mod_guile HTML page > into vanilla HTML) > > - Define primitives that wrap the applications' mechanisms for > reporting errors. Now you can signal those errors from Scheme. > > - Define a Scheme procedure that does the whole translation operation: > > (translate-page INPUT) -> OUTPUT > > This procedure can signal application errors as/when it needs to. > > - From C, just call out to translate-page, and return its result to > Apache. > > This may be a bit harder to begin with than writing everything in C. > But once this structure is in place, your scope for rapidly adding > further enhancements is much greater, because all the interesting code > is in Scheme, not C. Hmmm. There is more to an Apache module than just generating a HTML page. (And actually, it's this ``more'' which really makes a module worthwile wrt a CGI scripts, besides performance, that is): As a request traverses different stages of processing within the web server, it calls specialized hooks within the module, so the module can handle authentication, path resolving and what not. Now imagine I could catch script errors from within the C caller: I could install a simple error handler in C to deliver the proper error code to the client browser -- independently of my scripting language. [pooled/transaction oriented memory allocation model] > Sounds interesting, and maybe not too hard. Is the following > possible? > > (let ((temp-heap (switch-to-new-heap))) > ; This tell Guile's memory allocator to allocate a new heap > ; and to make all memory allocations until further notice > ; from this heap. > > (do-transaction-processing) > ; During which all memory allocations come from the new heap. > > (gc-and-destroy-heap temp-heap) > ; Perform a GC, assert that temp-heap now has nothing in use, > ; destroy temp-heap and switch back to previous heap. > ) Wow, this is very tempting :-) Regards -- tomas _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://mail.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Around again, and docs lead role 2003-04-26 7:33 Around again, and docs lead role Neil Jerram 2003-04-26 10:19 ` Thamer Al-Harbash @ 2003-05-12 16:46 ` Max Techter 2003-05-12 20:25 ` Neil Jerram 1 sibling, 1 reply; 28+ messages in thread From: Max Techter @ 2003-05-12 16:46 UTC (permalink / raw) Cc: Guile Development Neil Jerram <neil@ossau.uklinux.net> writes: snip > > That said... is there anyone out there who'd be interested in taking > over the lead role on Guile documentation? > > I have three reasons for asking this: > > - I don't expect to have a _lot_ of time for Guile soon, and the docs > would benefit from someone with more time available. > > - I have other Guile interests that I'd like to spend some of that > time on. > > - A new pair of eyes could take a fresh look at the higher-level doc > issues such as overall organization, what kind of docs we need > (e.g. the cookbook idea) etc. > > Any takers? > Hi, I am new to guile, new to this list (though I posted a couple of replies concerning the overall structure, and the principle need of tutorials) I am not ready to offer to take the lead role on Guile documentation, but I offer to `throw in my two cent' as Thamer put it in a subsequent posting in this thread. Last weekend I managed to spare an evening for diving deeper into the `Guile Reference Manual', Edition 1.0, for use with Guile 1.6.2 The first impression I had was verified: A prototype of a documentation. Lacking an understandable high level structure. Inconsistent in things that should be common (Eg. sometimes the aim and the audience of the section is mentioned, sometimes not) Inconsistent in things that should vary (Eg. different sections, chapters, parts freely mix the level of the examples supplied) Right now I am adding up pall pen remarks to my printed version, these would normally go down the shredder, after I managed to extract my private documentation map. If you think, that in the current state of discussion, this kind of critique could be useful, tell me: hacking revised comments into, say the .texi source, would not put a too heavy workload on me. regards max. _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://mail.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Around again, and docs lead role 2003-05-12 16:46 ` Around again, and docs lead role Max Techter @ 2003-05-12 20:25 ` Neil Jerram 2003-05-13 14:14 ` Max Techter 0 siblings, 1 reply; 28+ messages in thread From: Neil Jerram @ 2003-05-12 20:25 UTC (permalink / raw) Cc: Guile Development >>>>> "Max" == Max Techter <mtechter@gmx.de> writes: Max> Neil Jerram <neil@ossau.uklinux.net> writes: Max> snip >> >> That said... is there anyone out there who'd be interested in taking >> over the lead role on Guile documentation? >> >> [...] Max> Hi, Hi Max, Max> I am new to guile, new to this list Max> (though I posted a couple of replies concerning the overall Max> structure, and the principle need of tutorials) First off, apologies for not replying to your earlier detailed email yet - I'm a bit busy and taking time to digest it, but it looks like just the kind of high-level input that I was hoping someone would supply. Max> Last weekend I managed to spare an evening for diving deeper Max> into the Max> `Guile Reference Manual', [...] I will reply to your detailed points here in more detail later, but for now ... Max> If you think, that in the current state of discussion, this Max> kind of critique could be useful, tell me: Yes, absolutely! Max> hacking revised comments into, say the .texi Max> source, would not put a too heavy workload on me. That sounds great. If you have any suggestions for a overall plan of how to rectify the problems that you've noted, I would love to hear them too. Best regards, Neil _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://mail.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Around again, and docs lead role 2003-05-12 20:25 ` Neil Jerram @ 2003-05-13 14:14 ` Max Techter 2003-05-13 19:56 ` Neil Jerram 0 siblings, 1 reply; 28+ messages in thread From: Max Techter @ 2003-05-13 14:14 UTC (permalink / raw) Cc: Guile Development Neil Jerram <neil@ossau.uklinux.net> writes: > >>>>> "Max" == Max Techter <mtechter@gmx.de> writes: > > Max> Neil Jerram <neil@ossau.uklinux.net> writes: > Max> snip > >> snip > Max> I am new to guile, new to this list > > Max> (though I posted a couple of replies concerning the overall > Max> structure, and the principle need of tutorials) > > First off, apologies for not replying to your earlier detailed email > yet - I'm a bit busy and taking time to digest it, but it looks like > just the kind of high-level input that I was hoping someone would > supply. snip Take your time, Neil. I will be engaged in "my guile analysis" for quite some time. And there is no chance for me coming up with first well formed proposals before, say the end of this month, although I`ll try to supply my comments sooner. > Max> If you think, that in the current state of discussion, this > Max> kind of critique could be useful, tell me: > > Yes, absolutely! > > Max> hacking revised comments into, say the .texi > Max> source, would not put a too heavy workload on me. > snip On which version exactly should I build? I produced my printout and info files from: @set MANUAL_EDITION 1.0 ... ... @title Guile Reference Manual @subtitle Edition @value{MANUAL_EDITION}, \ for use with Guile @value{VERSION} # this evaluated to 1.6.2 @subtitle $Id: guile.texi,v 1.2.2.17 2002/09/25 00:12:21 ossau Exp $ Is this OK, or should I switch to a source from CVS? > If you have any suggestions for a overall plan of > how to rectify the problems that you've noted, > I would love to hear > them too. > Taking the fun of playing the harsh critic, I would feel obliged to propose better ways, naturally. regards max. _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://mail.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Around again, and docs lead role 2003-05-13 14:14 ` Max Techter @ 2003-05-13 19:56 ` Neil Jerram 0 siblings, 0 replies; 28+ messages in thread From: Neil Jerram @ 2003-05-13 19:56 UTC (permalink / raw) Cc: Guile Development >>>>> "Max" == Max Techter <mtechter@gmx.de> writes: Max> Take your time, Neil. I will be engaged in "my Max> guile analysis" for quite some time. Max> And there is no chance for me coming up with first Max> well formed proposals before, say the end of this Max> month, although I`ll try to supply my comments sooner. OK - thanks. Max> On which version exactly should I build? Max> I produced my printout and info files from: Max> Is this OK, or should I switch to a source Max> from CVS? CVS would be better: CVS is where ongoing work should be applied to, and it will be easier to do this if your patches are against CVS. Max> Taking the fun of playing the harsh critic, Max> I would feel obliged to propose better ways, Max> naturally. I look forward to them. Regards, Neil _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://mail.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 28+ messages in thread
end of thread, other threads:[~2003-05-27 2:02 UTC | newest] Thread overview: 28+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2003-04-26 7:33 Around again, and docs lead role Neil Jerram 2003-04-26 10:19 ` Thamer Al-Harbash 2003-04-27 20:56 ` Neil Jerram [not found] ` <3E92E1B40021F4D7@pop3.tiscalinet.es> 2003-04-27 21:01 ` Neil Jerram [not found] ` <3E92E1B4002B0632@pop3.tiscalinet.es> 2003-04-30 22:47 ` Neil Jerram [not found] ` <3EAFE4EC000D9733@pop1.tiscalinet.es> 2003-05-07 21:06 ` Doc organization (Re: Around again, and docs lead role) Neil Jerram 2003-05-08 16:21 ` Rob Browning 2003-05-08 17:50 ` rm 2003-05-08 22:47 ` Neil Jerram 2003-05-08 21:18 ` Wolfgang Jaehrling 2003-05-08 22:36 ` Neil Jerram 2003-05-09 2:23 ` Rob Browning 2003-05-09 17:46 ` David Van Horn 2003-05-10 11:32 ` Neil Jerram 2003-05-15 16:02 ` Rob Browning 2003-05-15 16:33 ` Paul Jarc 2003-05-08 16:21 ` Max Techter [not found] ` <3EB9828B00021495@pop1.tiscalinet.es> 2003-05-08 21:12 ` Max Techter 2003-05-27 2:02 ` Max Techter 2003-05-08 22:57 ` Neil Jerram 2003-05-09 12:32 ` Max Techter 2003-05-09 8:15 ` tomas 2003-05-10 12:01 ` Neil Jerram 2003-05-12 11:40 ` tomas 2003-05-12 16:46 ` Around again, and docs lead role Max Techter 2003-05-12 20:25 ` Neil Jerram 2003-05-13 14:14 ` Max Techter 2003-05-13 19:56 ` Neil Jerram
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).