Me gustaría crear una aplicación Haskell con .NET gui. Me gustaría utilizar Cabal como mi herramienta de construcción para tomar ventaja de que es la gestión de paquetes, etc. Creo que la parte Haskell debe ser el ejecutable que pone en el código .NET como:Creando una aplicación Haskell con .NET GUI
Esto evita tener que manualmente inicializar el Haskell RTC como se describe aquí: http://www.haskell.org/ghc/docs/7.0.3/html/users_guide/win32-dlls.html
Cabal no puede producir fácilmente archivos DLL de Windows: http://www.haskell.org/haskellwiki/Cabal/Developer-FAQ#Building_DLLs__with_Cabal
he descubierto que es bastante fácil crear una Haskell ejecutable .NET de esa llamada usando hs-dotnet, pero también necesito mi código GUI para volver a llamar a Haskell. Esperaba lograr esto usando el comando de "exportación extranjera" de Haskell, luego llamé a esta función exportada a través de la interoperación nativa de .NET. Sin embargo, la función de "exportación externa" no parece crear un punto de entrada en el ejecutable, no puedo ver el punto de entrada cuando lo hago dumpbin /EXPORTS
en el ejecutable resultante. No estoy seguro de si esto se debe a que GHC solo crea puntos de entrada al crear un dll a través del interruptor -shared
o si cabal agrega una bandera que suprime la creación del punto de entrada.
Así que supongo que la pregunta es ¿cómo obligo a GHC a crear puntos de entrada en mi ejecutable de Windows? ¿O sería mejor usar un ejecutable .NET siguiendo los pasos necesarios para crear un dll Haskell con cabal e inicializando manualmente el Haskell RTC?
¿De verdad quieres codificar en .net y en haskell lo tomo? Entonces sugeriría que pusieras tu haskell en un dll y llamarías a las funciones de .net. Su punto 1 es fácil de superar e incluso si es bueno, todavía debe usar algo más para construir su parte .net, así que su punto 2 es más una pista (es decir, no lo use) – Jonke