У меня есть функция, написанная на C Я бы хотел позвонить из программы Haskell. Тип Функция:Передача списка различных типизированных элементов функции C
foo :: Int -> Ptr a -> IO()
Он принимает размер и указатель на то, что и помещает все это где-то в памяти. Он предназначен для использования со смешанными типами. Вы можете поместить n float, затем m bools и т. Д. (В C).
Самый удобный способ представить такую ситуацию в Haskell - на мой взгляд - что-то вроде ([a],[b])
, например. Но мне нужно все, чтобы поместиться в Ptr a
(это фактически пустота * в C). Я могу попытаться написать такую функцию, как ([a],[b]) -> Ptr c
, но мне нужна помощь. Желаемая конечная функция будет:
withArrayLen magicArray foo
Прочитать интерфейс внешних функций и как записать хранимый экземпляр для типов данных. – Satvik