reallyUnsafe

Compare the underlying pointers of two values for equality. Returns 1 if the pointers are equal and 0 otherwise. The two values must be of the same type, of kind Type. See also reallyUnsafePtrEquality#, which doesn't have such restrictions.
Utility for lifting IO computations of type
IO a -> IO b
to
Eff es a -> Eff es b
This function is really unsafe because:
  • It can be used to introduce arbitrary IO actions into pure Eff computations.
  • The IO computation must run its argument in a way that's perceived as sequential to the outside observer, e.g. in the same thread or in a worker thread that finishes before the argument is run again.
Warning: if you disregard the second point, you will experience weird bugs, data races or internal consistency check failures. When in doubt, use unsafeLiftMapIO, especially since this version saves only a simple safety check per call of reallyUnsafeLiftMapIO f.
Create an unlifting function. This function is really unsafe because:
  • It can be used to introduce arbitrary IO actions into pure Eff computations.
  • Unlifted Eff computations must be run in a way that's perceived as sequential to the outside observer, e.g. in the same thread as the caller of reallyUnsafeUnliftIO or in a worker thread that finishes before another unlifted computation is run.
Warning: if you disregard the second point, you will experience weird bugs, data races or internal consistency check failures. When in doubt, use unsafeSeqUnliftIO, especially since this version saves only a simple safety check per call of the unlifting function.
A coercion between two Refined types, magicking up the claim that one predicate is entirely equivalent to another.
Constructs a Refined value, completely ignoring any refinements! Use this only when you can manually prove that the refinement holds.
A coercion between a type and any refinement of that type. See Data.Type.Coercion for functions manipulating coercions.
Warning: This function may violate type safety. Use with care!