[Haskell-cafe] Are libraries expected to enforce safe usage of thread-unsafe functions?

Thomas Koster tkoster at gmail.com
Wed Apr 13 01:12:20 UTC 2016


On 12 April 2016 at 17:57, Thomas Koster <tkoster at gmail.com> wrote:
> 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 <edwards.benj at gmail.com> wrote:
> 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.

Thomas Koster

More information about the Haskell-Cafe mailing list