S1 is the signature of a monadic traversal over arity-1 types.
Building containers from traversable types
Any traversable type can be turned into a Core container, using the monadic fold to implement all container functionality. The unified signature of a Core container with monadic traversals is S0_container (arity 0) or S1_container (arity 1).
To satisfy these signatures for new types, implement Basic0 or Basic1, and use the corresponding Make functor in Traversable.
For types that are _already_ Core containers, or types where custom implementation of the Core signature are desired, implement Basic_container0 or Basic_container1, and use the Extend functors.