
Ben,
On 12 April 2016 at 17:57, Thomas Koster
I am writing a library that has Handle-like values for resources that are not thread-safe (foreign state from a non-thread-safe C library).
Naturally, I want consumers to use my library safely, so I am considering making it safe for all by pessimistically enforcing safe usage with MVars.
Is it common/expected that Haskell libraries enforce safe access like this?
On 12 April 2016 at 18:48, Benjamin Edwards
Presumably you will have a safe and an unsafe variant of each function, the safe one calling its corresponding unsafe variant guarded by an appropriate locking mechanism. Just export both and note why the unsafe variants are marked "unsafe". Separating policy from implementation is always nice for callers. Presumably they know their application and what they are willing to pay for each call.
Good idea. At this time I think I will do just that. Easy to benchmark to measure the cost difference too. Thanks, Thomas Koster