From: Rob Browning <rlb@defaultvalue.org>
Cc: guile-devel@gnu.org
Subject: Re: Doc organization (Re: Around again, and docs lead role)
Date: Thu, 08 May 2003 21:23:49 -0500 [thread overview]
Message-ID: <87isskq2mi.fsf@raven.i.defaultvalue.org> (raw)
In-Reply-To: <m3he85qd4z.fsf@laruns.ossau.uklinux.net> (Neil Jerram's message of "08 May 2003 23:36:44 +0100")
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
next prev parent reply other threads:[~2003-05-09 2:23 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
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 [this message]
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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/guile/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87isskq2mi.fsf@raven.i.defaultvalue.org \
--to=rlb@defaultvalue.org \
--cc=guile-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).