Dans Haskell et OCAML, il est possible d'appeler dans la langue des programmes C. Dans quelle mesure une réalisabilité serait-elle de créer des applications natales pour Windows, Mac ou Linux, qui utilisent une utilisation intensive de cette technique? P>
(Je sais qu'il existe des bibliothèques d'interface graphique comme Wxhakell, mais supposons que l'on souhaitait simplement avoir une partie de votre logique d'application dans la langue étrangère.) P>
ou est-ce une idée terrible? p>
5 Réponses :
Eh bien, le principal risque est que, même si des installations existent, elles ne sont pas bien testées - pas beaucoup d'applications le font. Vous ne devriez pas avoir beaucoup de difficulté à appeler Haskell de C, semble assez facile: p>
http://www.hakell.org/hakellwiki/calling_hakell_from_c P>
Je dirais que s'il y a une raison impérieuse d'utiliser C pour le front-end (par exemple, vous avez une application héritée) et vous avez vraiment besoin d'une bibliothèque HASKELLL, ou souhaitez utiliser HASKELL pour une autre raison, alors, oui, Allez-y. Le principal risque est que peu de gens ne font pas cela, donc moins de documentation et d'exemples que d'avoir appelé l'autre sens. P>
Vous pouvez également intégrer OCAML en C aussi (voir Le manuel < / a>), bien que cela ne soit pas aussi communément fait que l'extension OCAML avec c. P>
ou est-ce une idée terrible? p> blockQuote>
Ce n'est pas une idée terrible du tout. Mais comme Notes Don Stewart, c'est probablement un chemin moins troden. Vous pouvez certainement lancer votre programme comme HASKELLL ou OCAML, puis faire un appel de fonctions étrangers dès la sortie de la porte de départ - et je vous recommande de structurer votre code de cette façon - mais cela ne change pas le fait que beaucoup plus de personnes appellent de Haskell en C que de C dans Haskell. De même pour OCAML. P>
Je fais une utilisation intensive de cela en compilant HASKELLL partagé des libs partagées appelées Haskell à l'extérieur. P>
généralement les tâches impliquées seraient à p>
Ces tâches sont plutôt robotiques et structurées, à un point que vous pourriez écrire quelque chose pour les automatiser. Enfait de ce que je m'utilise pour faire ceci est un outil que j'ai créé qui dépend de la dépendance sur les fonctions que vous avez marquées pour être exportée et que cela enroulera et compilera la libère partagée pour vous avec vous de vous donner les déclarations en C / C ++. p>
(Malheureusement, cet outil n'est pas encore sur Hackage, car il y a quelque chose que j'ai encore besoin de réparer et de tester beaucoup plus avant que je sois à l'aise de le faire) Strike> P>
outil est disponible ici http://hackage.hakell.org/package/hs2lib -0.4.8 p>
Je crois que la meilleure approche, même si l'interface graphique et la logique sont écrites dans la même langue, consiste à exécuter deux processus qui communiquent via un protocole texte lisible par l'homme (une DSL de quelque sorte). Cette architecture s'applique également à votre cas. P>
Les avantages sont évidents: l'interface graphique est détachable et remplaçable, les tests automatisés sont plus faciles, la journalisation et le débogage sont beaucoup plus faciles. P>
MLDONKEY.SOURCEFORGE.net/Main_Page
COHERENTPDF.COM/BLOG/?TAG=OCAML
Mise en garde ( www-list.cea.fr/labos/gb/ Lsl / caveat / index.html ) est un outil de vérification pour Critical incorporé C écrit principalement en C ++, mais qui utilise OCAML comme langue de script (une revue CAML générée pendant une session interactive peut être compilée et liée à la mise en garde à être rejoué à tout moment).