2010-01-02 8 views
3

Je voudrais compiler mon programme ML dans un binaire exécutable en utilisant mosmlc. Cependant, je n'ai pas trouvé beaucoup d'informations sur la façon de le faire.Standard ML: comment compiler un programme ML en utilisant mosmlc?

Le code que je voudrais compiler est ici http://people.pwf.cam.ac.uk/bt288/tick6s.sml

cx, cy, s, imgLocation sont 4 arguments que je voudrais prendre d'arguments de ligne de commande. Par exemple, si le programme est compilé avec le nom mandelbrot, l'entrée bash$mandelbrot -0.5 0.15 0.0099 image.png doit exécuter la fonction principale.

Répondre

2

Vous devriez être en mesure de mettre ce code dans un fichier foo.sml et exécuter

mosmlc -P full foo.sml 

Pour obtenir les arguments de ligne de commande que vous voulez la fonction CommandLine.arguments, de sorte que, par exemple,

val (cx, cy, s, imgLocation) = 
    case CommandLine.arguments() 
    of [a, b, c, d] -> (a, b, c, d) 
    | _ -> (usage(); Process.exit Process.failure) 

Vous » Il va falloir écrire votre propre fonction usage.


P.S. Si vous avez accès à mosmlc, vous avez probablement aussi accès au mosml interactif, qui a une fonction incroyablement utile help avec le type string -> unit.

+0

mosmlc ne fonctionne pas tout à fait sur le code: bash $ mosmlc -P tick6s.sml complet fichier "tick6s.sml", ligne 76, caractères 13-15: ! val _ = main (cx: réel, cy: réel, s: réel, imgLocation: chaîne de caractères); ! ^^^^^^^ ! Identifiant de valeur non liée: cx – segfault

+0

cela fonctionne bien maintenant. Si quelqu'un est intéressé, veuillez cliquer sur le lien dans ma question d'origine pour voir le code révisé. – segfault

Questions connexes