Please see the documentation on
The new instance in
The non-uniqueness of
JSWorld is need to be able to instantiate
Monad. The interface in
*JSWorld and not
JSWorld. The monadic interface is safe as long as you use
runJS (which internally use type casts).