This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Getting off the ground (also matrix stuff)


On Tue, Apr 21, 1998 at 12:42:04PM -0400, chrislee@lavash.ius.cs.cmu.edu wrote:
> >>>>> "T" == Telford Tendys <telford@eng.uts.edu.au> writes:
> 
>     T> I'm a bit of a guile newbie, I'm writing a matrix handling
>     T> library and I'd like to be able to use the scheme interpreter
>     T> to exaluate expressions, some of which may involve matricies.
> 
> I've just released a matrix library for Guile, based on BLAS/LAPACK
> (similar to the foundations of Matlab/Octave).  I put it at
> 
>   http://www.cs.cmu.edu/~chrislee/chrlib/

OK, I got LAPACK (in fortran) from netlib and grabbed the rest of the
stuff from your site. It took a bit of fiddling to get it compiled and
linked but I made it OK. Now I have an `mguile' executable.

I'll admit that I have a lot more reading of scheme to do before I get
that really under control (I'll try to finish this book on the
weekend). I know I'll sound pretty dumb here, but I couldn't actually
get access to ANY of the matrix functions from mguile. Now I know that
it has something to do with modules, and I know that the modules are
*.lo and *.la files and I know there's some scheme command that must
be executed to make the module link itself dynamically -- but I
couldn't get it to work <aaargh>.

Can I switch off dynamic modules completely and just have the whole
lot statically linked to mguile? I understand that there are a lot of
reasons why dynamic modules might be helpful but in my particular
application they probably won't be and I'd like to start as simple as
possible.

Another question bugs me. When running on Linux systems, dynamic
linking is usually done with `shared object' libraries (*.so.* files)
so why is the guile dynamic linking done differently? Seems like it
would make sense to use the existing system rather than start
something new. (So for example, if it ever gets running on Win95
then it should use .DLL files). Also, using the existing system would
mean that whatever command (the one I can't figure out) that does the
dynamic link, could also be used to gain access to any existing system
library (well, to the symbols at least, actually using the functions
sensibly may be more tricky). That represents the addition of a lot of
possible libraries for little effort. It also means that someone (like
me) who wants to build a guile library just has to follow the fairly
well established methods of generating a shared object.

Is this totally unrealistic?

Since I got a message about documentation being under review and got
no documentation at all with the 1.2 release of guile, you must
understand that I'm going mostly on comments in the source code here.
If anyone has SIMPLE examples of some working code (like inverting a
matrix say) then that would be a big help. I really want to start with
something bare bones and build up a minimal system that does what I
need rather than playing with something that is big enough to be
beyond the grasp of my comprehension (like common lisp for example). I
suspect that I'll be treading water for some time to come.

...still rambling with more questions...

One more issue, when both guile and mguile start there is about a 2
second delay on my system. Is this supposed to be there? Is it
checking for files that it can't find?  Am I supposed to run through
some sort of initialise sequence the first time I run it and then save
a binary image (like you have to with emacs)? How much init stuff
really is required for a bare command interpreter when the modules are
loaded dynamically (I would expect a small init delay for each module
that you load, as it gets loaded)?

Well there's all my questions for this week.

Am I the only one on this list who is working on Finite Elements and
electromagnetics (that isn't a question, just a vaguely social
sounding comment)?


	- Tel