Discussion:
Trouble trying to use some modules from the docs
Zelphir Kaltstahl
2018-06-02 17:13:07 UTC
Permalink
Hello Guile mailing list members,

Guile Scheme beginner here.

I want to play with network programming things in Guile a little, but I
cannot figure out how to use the modules, which are described in the
docs at
https://www.gnu.org/software/guile/manual/html_node/Network-Sockets-and-Communication.html
.

There is no (use-modules ...) example anywhere I looked and I could also
not find any examples in search engines. For other modules I somehow
always found an example (use-modules ...) somewhere, mostly in the docs.

Is there some inherent way of simply knowing how to import a module? I
did not read all of the docs from front to back, but that really should
not be necessary in order to use some part of it.

What I've tried already:

(use-modules (ice-9 posix))  ; maybe the same way many other things are
imported?
(use-modules (posix))  ; maybe it's its own module?
(use-modules (std posix))  ; maybe "std" for "standard" works?

None of those worked in the REPL.

A search on Github:

https://github.com/cky/guile/search?utf8=%E2%9C%93&q=use-modules+posix&type=

Yielded the following interesting result:

https://github.com/cky/guile/blob/c1eb929258fc6b9653d31c0d1bc654d9e300d4e5/module/ice-9/boot-9.scm#L1445

But why does (use-modules (ice-9 posix)) not work then? I am out of ideas.

Can you point me to the part of the docs, which explain how to always
know how to import a module, if there is such? Or, if there is no such
thing, can you help me out in this case?

Regards,

Zelphir
Matt Wette
2018-06-02 17:21:58 UTC
Permalink
Post by Zelphir Kaltstahl
Hello Guile mailing list members,
Guile Scheme beginner here.
I want to play with network programming things in Guile a little, but I
cannot figure out how to use the modules, which are described in the
docs at
https://www.gnu.org/software/guile/manual/html_node/Network-Sockets-and-Communication.html
.
There is no (use-modules ...) example anywhere I looked and I could also
not find any examples in search engines. For other modules I somehow
always found an example (use-modules ...) somewhere, mostly in the docs.
Is there some inherent way of simply knowing how to import a module? I
did not read all of the docs from front to back, but that really should
not be necessary in order to use some part of it.
(use-modules (ice-9 posix))  ; maybe the same way many other things are
imported?
(use-modules (posix))  ; maybe it's its own module?
(use-modules (std posix))  ; maybe "std" for "standard" works?
None of those worked in the REPL.
https://github.com/cky/guile/search?utf8=%E2%9C%93&q=use-modules+posix&type=
https://github.com/cky/guile/blob/c1eb929258fc6b9653d31c0d1bc654d9e300d4e5/module/ice-9/boot-9.scm#L1445
But why does (use-modules (ice-9 posix)) not work then? I am out of ideas.
Can you point me to the part of the docs, which explain how to always
know how to import a module, if there is such? Or, if there is no such
thing, can you help me out in this case?
Regards,
Zelphir
The manual is not crystal clear in all uses of procedures. The posix procedures are built-in so
no `(use-module ...)' is necessary. The test is to just type the procedure name. You will get a
procedure object in return. see example below. (Note this does not work with syntax.)

mwette$ guile
GNU Guile 2.2.3
Copyright (C) 1995-2017 Free Software Foundation, Inc.

Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
This program is free software, and you are welcome to redistribute it
under certain conditions; type `,show c' for details.

Enter `,help' for help.

scheme@(guile-user)> getaddrinfo
$1 = #<procedure getaddrinfo (_ #:optional _ _ _ _ _)>

scheme@(guile-user)>

Loading...