Blob types

Blob type is the super type of atoms that is used to encapsulate arbitrary binary data (often handles to streams, threads, clauses, etc). Strings, floats, big integers and rational numbers live on the (global) stack and are internally called indirect types and are also blobs in the sense that the content of these types is simply an array of binary data. (ref)


Notes:

current_blob/2 only list a blob if it currently has been created. Since some blobs are created by the system on start up they exist, however blobs need to be created first, so here is the creation of a few blobs followed by listing them using current_blob/2.

Creation of some blobs.

?- trie_new(A_trie).
A_trie = <trie>(0000000006F4BEB0).

?- use_module(library(semweb/rdf_db)).
true.

?- rdf_snapshot(A_rdf_snapshot).
A_rdf_snapshot = <rdf-snapshot>(1).

?- atom_to_memory_file(a,MF).
MF = <memory_file>(0000000006EF49E0).

?- atom_chars(€,Chars).
Chars = [€].

List of current blobs.

?- setof(Type,(Blob^current_blob(Blob,Type)),Types).
Types = [
   clause, 
   closure,
   memory_file,
   message_queue,
   rdf_snapshot,
   record,
   reserved_symbol,
   stream,
   text,
   thread,
   ucs_text,
   trie,
   zipper
].

While not currently listed above, there are additional blobs found by seeking PL_blob_t. (GitHub search)