Domanda

Mi è piaciuto molto imparare ML al college. Trovo una programmazione funzionale spesso un modo piacevolmente elegante di scrivere determinati algoritmi. Ho sentito parlare di F# e ho giocato un po '. Tuttavia, ho scritto alcune funzioni interessanti in ML e vorrei integrarle come librerie che potrei usare in altre applicazioni.

Di solito incollo le mie funzioni nell'interprete SMLNJ. C'è un modo per compilarli?

È stato utile?

Soluzione

Dovrai usare qualcosa di simile il compilatore MLJ. Compila nel codice byte Java. Oppure puoi usare il SML.NET compilatore per compilare a .net IL.

Altri suggerimenti

È comune tra Ml per entrambe le parti da esportare in C e poi si chiamano le funzioni C. Quasi tutto ha una libreria FFI per l'esportazione di "facilmente" in C.

http://www.smlnj.org/doc/smlnj-c/index.html

Quindi per il mondo esterno la tua libreria SML si comporterebbe come una libreria C, tranne senza i segfault e le perdite di memoria assiciate*

*non una garanzia

I progetti diffondono le lingue. Fai il lavoro a terra per un progetto interessante e innegabilmente "cool" usando ML e le persone si affollano nella lingua. Ad esempio, guarda Erlang con Ejabberd e Mochiweb-entrambi fantastici progetti che hanno fatto miracoli per un linguaggio di una tantum di diamine come Erlang (che è, a proposito, il mio linguaggio di sviluppo di sviluppo di recente). Io per primo, mi piacerebbe vedere qualcuno fare qualcosa di radici con ML, la lingua è una gioia con cui pensare.

Ci sono Diversi compilatori ML standard. Il wiki mlton contiene anche un prova delle prestazioni.

Ho usato Mosca ML che compila ML standard in bytecode. Non è veloce, ma funziona. Mlton è spesso citato per essere il miglior compilatore ML standard per quanto riguarda l'efficienza.

Si noti che Poly/ML versione 5 o successiva supporta sia il tradizionale modello "heap dump" che eseguibili autonomi in stile C. La documentazione sul file Sito web poli/ml è diffuso su molti luoghi diversi, alcuni con date davvero vecchie nel titolo, ma il sistema è vivo e calciato.

La generazione del codice oggetto è spiegata in passaggio note di rilascio Per la versione versione 5.0 (siamo attualmente a 5.5): vedi PolyML.export là.

C'è anche qualche interfaccia poli/ml C, che è stata rinnovata come utilizzata per alcuni progetti di GUI di recente. Dovresti chiedere alla mailing list Polyml.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top