Guile is the GNU Ubiquitous Intelligent Language for Extensions, the official extension language of the GNU system. It is an implementation of the Scheme language which can be easily embedded in other applications to provide a convenient means of extending the functionality of the application without requiring the source code to be rewritten.
This package provides an implementation of SRFI 128 for Guile. SRFI 128 defines comparators, which bundles a test type predicate, an equality predicate, an ordering predicate and a hash function into a single Scheme object. This can be used in the implementation of data structures. This package re-uses the SRFI sample implementation.
GNU TeXmacs is a text editing platform which is specialized for scientists. It is ideal for editing structured documents with different types of content. It has robust support for mathematical formulas and plots. It can also act as an interface to external mathematical programs such as R and Octave. TeXmacs is completely extensible via Guile.
This SRFI contains various procedures that accept and return procedures, as well as a few others, drawn from an earlier version of Chicken. Common Lisp has a few of them too, and more come from the Standard Prelude from Programming Praxis. Using these procedures helps to keep code terse and reduce the need for ad hoc lambdas.
This SRFI contains various procedures that accept and return procedures, as well as a few others, drawn from an earlier version of Chicken. Common Lisp has a few of them too, and more come from the Standard Prelude from Programming Praxis. Using these procedures helps to keep code terse and reduce the need for ad hoc lambdas.
This is a minimal set of Guile FFI bindings for the FFTW library's ‘guru interface’. It provides two functions: fftw-dft! rank sign in out
and fftw-dft rank sign in
. These bindings being minimal, there is no support for computing & reusing plans, or split r/i transforms, or anything other than straight complex DFTs.
G-Wrap is a tool and Guile library for generating function wrappers for inter-language calls. It currently only supports generating Guile wrappers for C functions. Given a definition of the types and prototypes for a given C interface, G-Wrap will automatically generate the C code that provides access to that interface and its types from the Scheme level.
This package contain a simple passphrase generator using the Diceware method. The concept is simple, roll five dice, combine the numbers from each die into a key and look up the word. Rinse and repeat until you are satisfied with the passphrase.
This package does not ship with any word lists, see the home page for information on where to fetch them.
AC/D-Bus is an implementation of the D-Bus wire protocol. D-Bus is an interprocess communication protocol popular on GNU/Linux systems to communicate with a variety of services. Originally designed for desktop environments, it is now used by programs like VLC media player, BlueZ, NetworkManager, Pulseaudio, systemd (including logind and resolved), Polkit, gnome-keyring, and many more.
Hygguile is a library that allows you to create cozy web user-interfaces using Guile Scheme, by defining an expressive DSL, and by leveraging the power of S-expressions, SXML and TailwindCSS.
The project aims to provide reusable, professional-looking and accessible web components, whose names resemble the HTML counterparts, thus easing the learning curve, and reducing the cognitive load.
Guile-Cairo wraps the Cairo graphics library for Guile Scheme. Guile-Cairo is complete, wrapping almost all of the Cairo API. It is API stable, providing a firm base on which to do graphics work. Finally, and importantly, it is pleasant to use. You get a powerful and well-maintained graphics library with all of the benefits of Scheme: memory management, exceptions, macros, and a dynamic programming environment.
Scheme lacks a flexible way to create and apply curried procedures. This SRFI describes curried, a variant of lambda that creates true curried procedures which also behave just like ordinary Scheme procedures. They can be applied to their arguments one by one, all at once, or anywhere in between, without any novel syntax. curried also supports nullary and variadic procedures, and procedures created with it have predictable behavior when applied to surplus arguments.
This SRFI defines two disjoint immutable container types known as Maybe and Either, both of which can contain objects collectively known as their payload. A Maybe object is either a Just object or the unique object Nothing (which has no payload); an Either object is either a Right object or a Left object. Maybe represents the concept of optional values; Either represents the concept of values which are either correct (Right) or errors (Left).
This SRFI defines two disjoint immutable container types known as Maybe and Either, both of which can contain objects collectively known as their payload. A Maybe object is either a Just object or the unique object Nothing (which has no payload); an Either object is either a Right object or a Left object. Maybe represents the concept of optional values; Either represents the concept of values which are either correct (Right) or errors (Left).
This package provides an implementation of SRFI-232, which describes curried
, a variant of lambda
that creates true curried procedures which also behave just like ordinary Scheme procedures. They can be applied to their arguments one by one, all at once, or anywhere in between, without any novel syntax. curried
also supports nullary and variadic procedures, and procedures created with it have predictable behavior when applied to surplus arguments.
This package provides an implementation of SRFI 146 for Guile. SRFI 146 defines datastructures that implement mappings (finite sets of associations consisting of a key and a value). Two types of mappings are defined: One using a comparator to define an order on the keys and another using a hash function on the keys. The datastructures and procedures are by default purely-functional. This package re-uses the SRFI sample implementation that is based on red-black trees and Hash Array Mapped Trie (HAMT).
Topological sorting is an algorithm that takes a graph consisting of nodes and other nodes that depend on them, forming a partial order, and returns a list representing a total ordering of the graph. If the graph is cyclic, the topological sort will fail. The procedure topological-sort returns three values. If sorting succeeds, the first value contains the result and the second and third are #false. If sorting fails, the result is #false and the second and third value may provide additional information about the error.
Topological sorting is an algorithm that takes a graph consisting of nodes and other nodes that depend on them, forming a partial order, and returns a list representing a total ordering of the graph. If the graph is cyclic, the topological sort will fail. The procedure topological-sort returns three values. If sorting succeeds, the first value contains the result and the second and third are #false. If sorting fails, the result is #false and the second and third value may provide additional information about the error.
Data validation and type checking (supposedly) make for more correct code. And faster code too, sometimes. And, in rare cases, code that's easier to follow than the un-checked one. Unfortunately, Scheme does not have many (type-)checking primitives out of the box. This SRFI provides some, with the aim of allowing more performant and correct code with minimum effort on the user side. Both (manual) argument checking/validation (check-arg) and return value(s) (values-checked) checking/coercion are provided. Syntax sugar like lambda-checked and define-checked is added on top.
Pre-built Guile for bootstrapping purposes.
Guile Shapefile is a Guile library for reading shapefiles.
Provides bindings for GNOME's libnotify C library to Guile
Guile-colorized provides you with a colorized REPL for GNU Guile.
Guile-websocket provides an implementation of the WebSocket protocol as defined by RFC 6455.