
Hi everyone, In a fit of madness I have found myself writing Haskell code where I need to implement a Storable instance. However, by virtue of not being a C programmer, I'm fairly lost on some of the details, especially the value of the sizeOf and alignment methods. My Haskell-level record is the following: data SignedMessage = SignedMessage { messageLength :: CSize , messageForeignPtr :: ForeignPtr CUChar , signatureForeignPtr :: ForeignPtr CUChar } Here is the code of the Storable instance: https://gist.github.com/Kleidukos/31346d067f309f2a86cbd97a85c0f1e8#file-sign... And so I used `hedgehog-classes` to test the Storable instance. However, all the tests fail with the same reason: Prelude.undefined: https://gist.github.com/Kleidukos/31346d067f309f2a86cbd97a85c0f1e8#file-unde... The main problem (and that's certainly a red herring for me) is that the `undefined` call comes frombase:Foreign.Marshal.Array. Which shouldn't be a problem, as it is not supposed to be evaluated! Yet apparently it is. If you're interested to see the full code, it's located here: https://github.com/haskell-cryptography/libsodium-bindings/blob/add-sel-pack... I'm not sure how to proceed from here. What would be a good angle to approach this? Cheers, Hécate -- Hécate ✨ 🐦: @TechnoEmpress IRC: Hecate WWW: https://glitchbra.in RUN: BSD