unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
From: Andreas Rottmann <a.rottmann@gmx.at>
Cc: gnu-arch-users@gnu.org, guile-user@gnu.org, ttn@glug.org,
	guile-devel@gnu.org
Subject: Re: ITLA
Date: Mon, 01 Mar 2004 20:14:29 +0100	[thread overview]
Message-ID: <87r7wc4bxm.fsf@alice.rotty.yi.org> (raw)
In-Reply-To: <200403011904.LAA20046@morrowfield.regexps.com> (Tom Lord's message of "Mon, 1 Mar 2004 11:04:02 -0800 (PST)")

Tom Lord <lord@emf.net> writes:

>     > I'm not totally clear what you mean here, and how that relates to an
>     > Arch<->CVS gateway. Anyway, you might be interested in my ITLA
>     > thingy[0].
>
> You appear to have left out the footnote.
>
Indeed: [0] http://stud3.tuwien.ac.at/~e9926584/ITLA

> I'd like to point out some info about the ITLA idea.  ITLA is not, at
> it's core, tla specific -- it's a generic engine for making
> interactive Scheme programs, both CLI and GUI.
>
> See: 
>
>      http://mail.gnu.org/archive/html/gnu-arch-users/2003-11/msg00291.html
>
I obviously missed the initial discussion. Big thanks for pointing
this out.

> The ITLA framework is one of the target applications for Pika Scheme
> but it will be a long time before Pika is ready to start implementing
> it.   There's no reason not to start on the framework earlier, using
> Guile (and many good reasons to do so).
>
I'll quote parts of your initial ITLA mail here, adding my view how
things would/could look like when *I*'d do this in Guile, building
upon/integrating my ITLA stuff.

,----
|   Each interactive command will be defined by an ordinary Scheme
|   procedure supplemented with a _declaration_.  The declaration lists:
| 
|   ~ the name of the command
|   ~ a documentation string for the command
|   ~ a list of options and parameters to the command, each
|     specified by:
| 
|         + a parameter name
| 
|         + a "type declaration" (e.g., "string", or "new-archive-name",
|           or "existing-archive-name", or "archive-name".)
| 
|         + a description of how it is parsed from options and
|           arguments provided on command lines
| 
|         + a default value
| 
|         + an optional prompt string
| 
|         + an optional help string for the parameter
| 
|   ~ a "type declaration" for the output of the command
| 
I'd make the declaration result in registering a GOOPS class instance
somewhere. Type declarations would map to classes directly, along with
generics that deal with I/O, completion, etc.

|   The "main loop" of itla reads partially specified command lines,
|   looks up the interactive command, parses any options and arguments
|   already provided, and enters a generic "argument editor" that
|   prompts for the remaining arguments
| 
|   Once the parameter editor is done collecting parameters, the 
|   procedure that defines the command is called.   Typically, it
|   works by running tla as a subprocess.
|
This is the part on which "my" ITLA focuses currently: Offering a
GOOPS-based scripting interface to tla.

|   It can also recursively
|   invoke the command loop to run particular commands (e.g., import 
|   might recursively call "prepare-tree" and/or "make-archive").
| 
Right now, I use the Guile repl (as can be seen from the screen-shot
at [0]), which is of course not the most user-friendly thing to do
:-).

|   The rationale for this approach is four-fold:
| 
[sip]

Full ACK here.

| * Usefulness for GUIs
| 
|   There is nothing that says that the parameter editor and output 
|   handler have to be TTY programs -- nothing that says they have
|   to do their work by printing prompts and reading keyboard input.
| 
|   For example, a GUI might include an alternative form of the 
|   parameter editor that knows how to translate _any_ command 
|   declaration into a "form".
| 
|   That approach can make writing a complete GUI a much smaller task
|   and effort can focus on generic parts that help the entire 
|   interface (such an an "archive name selector").
| 
|   It also means that a GUI can automatically just "work" as new
|   commands are added to itla.   For example, after I load a set
|   of extensions defining commands specific to the tla project,
|   these can automatically appear on a menu or toolbar and immediately
|   have a GUI interface.
`----

I'd use Guile-GObject[1] here. 

[1] http://www.gnu.org/software/guile-gtk/docs/

Cheers, Andy
-- 
Andreas Rottmann         | Rotty@ICQ      | 118634484@ICQ | a.rottmann@gmx.at
http://yi.org/rotty      | GnuPG Key: http://yi.org/rotty/gpg.asc
Fingerprint              | DFB4 4EB4 78A4 5EEE 6219  F228 F92F CFC5 01FD 5B62

Latein ist das humanoide Äquivalent zu Fortran.
   -- Alexander Bartolich in at.linux


_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-user


  reply	other threads:[~2004-03-01 19:14 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-03-01  3:32 Extended -e syntax Clinton Ebadi
2004-03-01  5:04 ` Andreas Rottmann
     [not found]   ` <E1AxlJY-0002cb-00@surf.glug.org>
2004-03-01 14:27     ` Arch and Guile Andreas Rottmann
2004-03-01 19:04       ` ITLA (was Re: Arch and Guile) Tom Lord
2004-03-01 19:14         ` Andreas Rottmann [this message]
2004-03-01 21:55           ` ITLA Tom Lord
2004-03-02  0:11             ` ITLA Andreas Rottmann
2004-03-02  2:50               ` ITLA Tom Lord
2004-03-02 14:04                 ` ITLA Andreas Rottmann
2004-03-02  3:26             ` ITLA Miles Bader
2004-03-03 11:22           ` ITLA Neil Jerram
2004-03-03 11:55             ` ITLA Andreas Rottmann
2004-03-06 15:47 ` ttn's build system [was: Extended -e syntax] Andreas Rottmann
     [not found]   ` <E1AziNk-0007mW-00@surf.glug.org>
2004-03-06 20:39     ` ttn's build system Andreas Rottmann
2004-03-10 18:59   ` Andreas Rottmann
2004-03-10 22:28   ` ttn's build system [was: Extended -e syntax] Clinton Ebadi
2004-03-10 23:22   ` Tom Lord

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=87r7wc4bxm.fsf@alice.rotty.yi.org \
    --to=a.rottmann@gmx.at \
    --cc=gnu-arch-users@gnu.org \
    --cc=guile-devel@gnu.org \
    --cc=guile-user@gnu.org \
    --cc=ttn@glug.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).