How do I disable overflow checking?
How do I disable asserts?
Asserts can't be globally disabled.
If there are certain expensive asserts in your program that you might want to turn off,
you will have to come up with a way to make them conditional.
How do I do nothing?
() is the empty void value.
How do I parse JSON or Kid files?
Parsing functions are in keen/parse.
How do I test if a string is a substring of another?
There are often not string-specific functions when a generic collection function will work.
In this case, you can use contains-seq to test for a substring.
Why are log and print different?
Why does the standard library not use interfaces or contexts?
The standard library is used by all Keen programs,
but the best interfaces to use depends on specific circumstances.
So instead, the standard library just defines global functions and leaves abstraction to the programmer.
Why can't I compare mutable values with ==?
To avoid confusion.
It's unclear whether == on mutable values should compare the contents or the identity.
To compare the identity, use reference-equal.
(This is unsafe in general, but can be trusted for mutable values.)
To compare the contents, convert to immutable values and compare those.
Why are enum and flags types different?
In Keen, an enum type is guaranteed to have one of the listed values.
A flags type can have any combination of values.
Why can't I use a mutable type as a map key?
If you mutated the object, its hash could change, making it unretrievable.
If you need to associate some data with mutable values (and can't just add it as a field),
you could give the values an identity property and key the map by the identity.