STM is:module

Software Transactional Memory: a modular composable concurrency abstraction. See
Software Transactional Memory: a modular composable concurrency abstraction. See This module only defines the STM monad; you probably want to import Control.Concurrent.STM (which exports Control.Monad.STM). Note that invariant checking (namely the always and alwaysSucceeds functions) has been removed. See ticket #14324 and the removal proposal. Existing users are encouraged to encapsulate their STM operations in safe abstractions which can perform the invariant checking without help from the runtime system.
Lifted version of Control.Concurrent.STM
Classy software transactional memory.
MonadSTM testing implementation, internal types and definitions. This module is NOT considered to form part of the public interface of this library.
Provide PostMessage function and friends.
A Object representing an adjustable bounded value
This module defines function for running a set of tests. Furthermore, it provides functionality for organzing tests into a hierarchical structure. This functionality is mainly used internally in the code generated by the hftpp pre-processor.
GListModel is an interface that represents a mutable list of Object. Its main intention is as a model for various widgets in user interfaces, such as list views, but it can also be used as a convenient method of returning lists of data, with support for updates. Each object in the list may also report changes in itself via some mechanism (normally the Object::notify signal). Taken together with the ListModel::itemsChanged signal, this provides for a list that can change its membership, and in which the members can change their individual properties. A good example would be the list of visible wireless network access points, where each access point can report dynamic properties such as signal strength. It is important to note that the GListModel itself does not report changes to the individual items. It only reports changes to the list membership. If you want to observe changes to the objects themselves then you need to connect signals to the objects that you are interested in. All items in a GListModel are of (or derived from) the same type. listModelGetItemType returns that type. The type may be an interface, in which case all objects in the list must implement it. The semantics are close to that of an array: listModelGetNItems returns the number of items in the list and listModelGetItem returns an item at a (0-based) position. In order to allow implementations to calculate the list length lazily, you can also iterate over items: starting from 0, repeatedly call listModelGetItem until it returns NULL. An implementation may create objects lazily, but must take care to return the same object for a given position until all references to it are gone. On the other side, a consumer is expected only to hold references on objects that are currently ‘user visible’, in order to facilitate the maximum level of laziness in the implementation of the list and to reduce the required number of signal connections at a given time. This interface is intended only to be used from a single thread. The thread in which it is appropriate to use it depends on the particular implementation, but typically it will be from the thread that owns the thread-default main context (see mainContextPushThreadDefault) in effect at the time that the model was created. Over time, it has established itself as good practice for list model implementations to provide properties item-type and n-items to ease working with them. While it is not required, it is recommended that implementations provide these two properties. They should return the values of listModelGetItemType and listModelGetNItems respectively and be defined as such:

c code

properties[PROP_ITEM_TYPE] =
g_param_spec_gtype ("item-type", NULL, NULL, G_TYPE_OBJECT,
G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
properties[PROP_N_ITEMS] =
g_param_spec_uint ("n-items", NULL, NULL, 0, G_MAXUINT, 0,
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
A Object representing an adjustable bounded value
GtkAdjustment is a model for a numeric value. The GtkAdjustment has an associated lower and upper bound. It also contains step and page increments, and a page size. Adjustments are used within several GTK widgets, including SpinButton, Viewport, Scrollbar and Scale. The GtkAdjustment object does not update the value itself. Instead it is left up to the owner of the GtkAdjustment to control the value.
GtkFilterListModel is a list model that filters the elements of the underlying model according to a GtkFilter. It hides some elements from the other model according to criteria given by a GtkFilter. The model can be set up to do incremental filtering, so that filtering long lists doesn't block the UI. See filterListModelSetIncremental for details. GtkFilterListModel passes through sections from the underlying model.
GtkFlattenListModel is a list model that concatenates other list models. GtkFlattenListModel takes a list model containing list models, and flattens it into a single model. Each list model becomes a section in the single model.
A GtkMapListModel maps the items in a list model to different items. GtkMapListModel uses a [callbackgtk.MapListModelMapFunc]. Example: Create a list of GtkEventControllers

c code

static gpointer
map_to_controllers (gpointer widget,
gpointer data)
{
gpointer result = gtk_widget_observe_controllers (widget);
g_object_unref (widget);
return result;
}

widgets = gtk_widget_observe_children (widget);

controllers = gtk_map_list_model_new (widgets,
map_to_controllers,
NULL, NULL);

model = gtk_flatten_list_model_new (GTK_TYPE_EVENT_CONTROLLER,
controllers);
GtkMapListModel will attempt to discard the mapped objects as soon as they are no longer needed and recreate them if necessary. GtkMapListModel passes through sections from the underlying model.
GtkSliceListModel is a list model that presents a slice of another model. This is useful when implementing paging by setting the size to the number of elements per page and updating the offset whenever a different page is opened. GtkSliceListModel passes through sections from the underlying model.
A GListModel that sorts the elements of an underlying model according to a GtkSorter. The model is a stable sort. If two items compare equal according to the sorter, the one that appears first in the original model will also appear first after sorting. Note that if you change the sorter, the previous order will have no influence on the new order. If you want that, consider using a GtkMultiSorter and appending the previous sorter to it. The model can be set up to do incremental sorting, so that sorting long lists doesn't block the UI. See sortListModelSetIncremental for details. GtkSortListModel is a generic model and because of that it cannot take advantage of any external knowledge when sorting. If you run into performance issues with GtkSortListModel, it is strongly recommended that you write your own sorting list model. GtkSortListModel allows sorting the items into sections. It implements GtkSectionModel and when SortListModel:sectionSorter is set, it will sort all items with that sorter and items comparing equal with it will be put into the same section. The SortListModel:sorter will then be used to sort items inside their sections.
GtkTreeListModel is a list model that can create child models on demand.