Symbol to Object table. Internally it is implemented on hash-table.
Note that dictionary is not a weak map; if you are going to make a highly memory-consuming program with dictionaries, you should know that dictionaries keep their bound objects and never let them free until you explicitly deletes bindings.
-``(dictionary)``
Returns a newly allocated empty dictionary. In the future, it is planned to extend this function to take optional arguments for initial key/values.
-``(dictionary? obj)``
Returns ``#t`` if obj is a dictionary.
-``(dictionary-ref dict key)``
Look up dictionary dict for a value associated with symbol key. If no object is associated with key, it will raise an error.
-``(dictionary-set! dict key obj)``
If there is no value already associated with key, this function newly creates a binding of key with obj. Otherwise, updates the existing binding with given obj.
-``(dictionary-delete dict key)``
Deletes the binding associated with key from dict. If no binding on dict is associated with key, an error will be raised.
-``(dictionary-size dict)``
Returns the number of registered elements in dict.
5.4 Syntax definitions yes TODO: internal macro definition is not supported.
5.5 Recored-type definitions yes
5.6.1 Library Syntax incomplete In picrin, libraries can be reopend and can be nested.
5.6.2 Library example N/A
5.7 The REPL yes
6.1 Equivalence predicates yes TODO: equal? must terminate if circular structure is given
6.2.1 Numerical types yes picrin has only two types of internal representation of numbers: fixnum and double float. It still comforms the R7RS spec.
6.2.2 Exactness yes
6.2.3 Implementation restrictions yes
6.2.4 Implementation extensions yes
6.2.5 Syntax of numerical constants yes
6.2.6 Numerical operations yes ``denominator``, ``numerator``, and ``rationalize`` are not supported for now. Also, picrin does not provide complex library procedures.
6.2.7 Numerical input and output incomplete only partial support supplied.
6.3 Booleans yes
6.4 Pairs and lists yes ``list?`` is safe for using against circular list.
6.5 Symbols yes
6.6 Characters yes
6.7 Strings yes
6.8 Vectors yes
6.9 Bytevectors yes
6.10 Control features yes
6.11 Exceptions yes ``raise-continuable`` is not supported
..[#] Picrin provides hygienic macros in addition to so-called legacy macro (``define-macro``), such as syntactic closure, explicit renaming macro, and implicit renaming macro. As of now let-syntax and letrec-syntax are not provided.