Certainly doable. I just finished a WinRT/UWP projection for the Extensible Storage Engine API in the form of a component DLL and companion .winmd file. I used Windows Runtime Library (WRL) in place of C++/WinRT to better understand the low level interface. The calling side of the binding just has to be WinRT/UWP compliant. I'm assuming Haskell has a library or add-on to perform that.