Les deux MosML et MLton ont également la possibilité de créer autonome des fichiers binaires. MosML par mosmlc de commande et MLton par le biais de la mlton de commande.
Notez que MLton n'a pas de boucle d'interaction, mais est un ensemble de programme d'optimisation du compilateur. Qui de base signifie qu'il prend du temps à compiler, mais à son tour il génère incroyablement rapide SML programmes.
Pour SML/NJ, vous pouvez utiliser l' CM.mk_standalone
de la fonction, mais ce n'est pas conseillé dans la CM Manuel de l'Utilisateur page 45. Au lieu de cela, ils recommandent que vous utilisez le ml-commande créer. Cela va générer un SML/NJ tas d'image. Le segment de l'image doit être exécuté avec le @SMLload paramètre, ou vous pouvez utiliser le heap2exec programme, étant donné que vous avez un système pris en charge. Si vous n'avez pas, alors je suggère que vous utilisez MLton à la place.
Les éléments suivants peuvent être utilisés pour générer un valide SML/NJ tas d'image:
test.cm:
Group is
test.sml
$/basis.cm
test.sml:
structure Test =
struct
fun main (prog_name, args) =
let
val _ = print ("Program name: " ^ prog_name ^ "\n")
val _ = print "Arguments:\n"
val _ = map (fn s => print ("\t" ^ s ^ "\n")) args
in
1
end
end
Et pour générer le segment de l'image vous pouvez utiliser: ml-build test.cm Test.main test-image
, puis l'exécuter en sml @SMLload test-image.XXXXX arg1 arg2 "this is one argument"
où XXXXX est votre architecture.
Si vous décidez de MLton à un certain point, alors vous n'avez pas besoin d'avoir une fonction principale. Il évalue tout au toplevel, vous pouvez donc créer une fonction principale et de l'avoir appelé par quelque chose comme ceci:
fun main () = print "this is the main function\n"
val foo = 4
val _ = print ((Int.toString 4) ^ "\n")
val _ = main ()
Ensuite, vous pouvez le compiler mlton foo.sml
, qui permettra de produire un exécutable nommé "toto". Lorsque vous l'exécutez, il va produire ceci comme résultat:
./foo
4
this is the main function
Notez que ce n'est qu'un fichier, lorsque vous avez plusieurs fichiers, vous aurez besoin soit de l'utilisation de la MLB (ML fichiers) qui est MLtons fichiers de projet ou vous pouvez utiliser les cm des fichiers et de les compiler en mlton projectr.mlb