Я заинтересован в использовании более эффективных указателей для проекта, реализующего императивный язык в Haskell. Для этого уже существует библиотека: Struct. На нем есть сообщение в блоге и краткая документация.
Проблема заключается только в довольно сложном примере ссылок на деревья. Для кого-то вроде меня, который не использует Haskell на ежедневной основе, довольно утомительно сражаться с небольшим документированным кодом, шаблоном haskell и т.д.
Мне понадобится более простой пример для начала, по выражению одного из двух типов данных:
import Data.IORef
data DLL a = DLL a (Maybe (IORef (DLL a))) (Maybe (IORef (DLL a)))
data DLLINT = DLLINT Int (Maybe (IORef DLLINT)) (Maybe (IORef DLLINT))
Это должно быть всего лишь несколько простых строк для тех, кто свободно говорит в Haskell/GHC.
Как я могу выразить один из вышеперечисленных типов данных с помощью библиотеки Struct?