Я разрабатываю небольшую программу на Haskell, которая использует внешнюю статическую библиотеку, которую я разработал на C ++. Он обращается к библиотеке через FFI (интерфейс внешней функции) ghc. Внутри этой библиотеки я хотел бы сделать вывод на консоль. Тем не менее, он выглядит для меня как то, что сторона c ++ не имеет правильного дескриптора stdout, потому что вывод не отображается на консоли. Итак, мои вопросы:
- ghc захватывает эти три потока (stdout, stdin, stderr) или libstdc ++ просто не инициализирует их, потому что я связываюсь с ghc?
- Должен ли мой импорт FFI быть "безопасным", если он пишет в стандартный вывод?
- Как я могу передать стандартный вывод в функцию C? Должен ли я просто передать его напрямую или мне нужен тип C?
Дополнительные примечания: Я связываю libstdc ++ напрямую с исполняемым файлом (т.е. ghc -lstdc ++ ...), который, как я наивно полагал, будет правильным способом сделать это. Кажется, хорошо работает
Отказ от ответственности: Все еще довольно плохо знаком с Хаскеллом, так что, малышка, пока что, P