не могу заставить wxHaskell работать с ghci на Mac

Я пытаюсь запустить пример, используя EnableGUI функция.

% ghci -framework Carbon Main.hs

*Main> enableGUI >> main

Вот что я получаю вместо работающей программы:

2013-01-14 00:21:03.021 ghc[13403:1303] *** Assertion failure in +[NSUndoManager _endTopLevelGroupings], /SourceCache/Foundation/Foundation-945.11/Misc.subproj/NSUndoManager.m:328
2013-01-14 00:21:03.022 ghc[13403:1303] +[NSUndoManager(NSInternal) _endTopLevelGroupings] is only safe to invoke on the main thread.
2013-01-14 00:21:03.024 ghc[13403:1303] (
    0   CoreFoundation                      0x00007fff8c8ea0a6 __exceptionPreprocess + 198
    1   libobjc.A.dylib                     0x00007fff867243f0 objc_exception_throw + 43
    2   CoreFoundation                      0x00007fff8c8e9ee8 +[NSException raise:format:arguments:] + 104
    3   Foundation                          0x00007fff884966a2 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 189
    4   Foundation                          0x00007fff884fc8b7 +[NSUndoManager(NSPrivate) _endTopLevelGroupings] + 156
    5   AppKit                              0x00007fff8ecb832d -[NSApplication run] + 687
    6   libwx_osx_cocoau_core-2.9.4.0.0.dylib 0x000000010ae64c96 _ZN14wxGUIEventLoop5DoRunEv + 40
    7   libwx_baseu-2.9.4.0.0.dylib         0x000000010b37e0e5 _ZN13wxCFEventLoop3RunEv + 63
    8   libwx_baseu-2.9.4.0.0.dylib         0x000000010b2e91bf _ZN16wxAppConsoleBase8MainLoopEv + 81
    9   libwx_osx_cocoau_core-2.9.4.0.0.dylib 0x000000010ae1b04f _ZN5wxApp5OnRunEv + 29
    10  libwx_baseu-2.9.4.0.0.dylib         0x000000010b32e8d1 _Z7wxEntryRiPPw + 102
    11  libwxc.dylib                        0x000000010bc8a9a4 ELJApp_InitializeC + 116
    12  ???                                 0x000000010beb9702 0x0 + 4494956290
)
2013-01-14 00:21:03.024 ghc[13403:1303] *** Assertion failure in +[NSUndoManager _endTopLevelGroupings], /SourceCache/Foundation/Foundation-945.11/Misc.subproj/NSUndoManager.m:328

Когда я компилирую и macosx-app это работает довольно хорошо, но, по понятным причинам, я действительно хочу, чтобы это работало из ghci.

Что я могу сделать? Google ничего не сообщает о таинственных проблемах NSUndoManager, используемых с Haskell. :(


person Valentin Golev    schedule 13.01.2013    source источник


Ответы (2)


ghci -fno-ghci-песочница

у меня работает на OSX 10.8, wx 0.90.0.1

спасибо Генриху: https://github.com/jodonoghue/wxHaskell/pull/6

person Luc Taesch    schedule 06.04.2013
comment
добавление ghc-options: -fno-ghci-sandbox в файл кабалы/(Исполняемый раздел) make is work in Leksah/ghci - отладчик тоже. - person Luc Taesch; 08.04.2013
comment
Только что попробовал и подтвердил, что ghc-options: -fno-ghci-sandbox решает проблему. Спасибо, Люк Тэш! - person Slabko; 03.10.2015

wxHaskell некоторое время не работал в ghci. По-видимому, управление памятью C++ и повторное использование компонентов в ghci вызывают проблемы. Вы должны постоянно переписывать main. :(

В часто задаваемых вопросах говорится

GHCI не может смешивать статические и динамические библиотеки; это будет решено в ближайшее время в wxHaskell.

person AndrewC    schedule 13.01.2013