Ответ 1
Вам нужно написать код haskell, чтобы вывести эти структуры данных в те, которые вы можете использовать в Haskell. Инструмент c2hs очень полезен в этом отношении: http://hackage.haskell.org/package/c2hs
Хотя инструмент, как представляется, предназначен для вызова C из Haskell, он также очень полезен для противоположного в одном смысле - он позволяет вам объединять сложные типы C с типами Haskell. Поскольку функции, которые вы выставили, должны будут брать типы C (как правило, указатели на сложные структуры), тогда вы можете A) построить соответствующие C-структуры, а B) использовать функции c2hs, чтобы затем маршировать эти структуры в Haskell в ваших открытых функциях, чтобы вы могли работать с ними.
Также обратите внимание, что с помощью сгенерированных стилей c2hs вам не нужно сортировать все. Вы можете просто создать аксессуры, чтобы заглянуть в части структур данных C, которые вам действительно нравятся.