C'est votre premiere visite sur ce site ? Vous ne savez pas ce qu'est ubuntu ? cliquer ici !

[OCaml] Matl, pour une alternative à Maple

09/08/2011 a 14h17 | 1772 hits

Si des alternatives libres de Maple existent (citons notamment Maxima), il est souvent bien difficile pour des étudiants des classes préparatoires de s'adapter à la syntaxe de l'un d'eux (surtout par manque de temps).

Pour répondre à ce problème (qui est aussi mon problème), je n'ai trouvé rien de plus amusant que de chercher à développer un langage proche, sinon identique, à celui de Maple :



Evidemment, le projet reste entièrement inachevé et il est probable qu'il en reste là (le but étant de coder vite, pas forcément de coder bien : le manque de temps est aussi mon problème).

Mais voyons déjà les quelques possibilités du programme :


$ rlwrap ./matl
Matl Version 0.0.1

[> f:=x->x^x; /* définition de fonctions */
f := (x)->x^x
[> f(111); /* gestion des grands entiers */
107362012888474225801214565046695501959850723994224804804775911175625076195783347022491226170093634621466103743092986967777786330067310159463303558666910091026017785587295539622142057315437069730229375357546494103400699864397711
[> list_var(); /* fonctions disponibles */
("seq", "sum", "asin", "list_var", "acos", "del_var", "tan", "sin", "cos", "sqrt", "mod", "min", "evalf", "exp", "atan", "f")
[> g:=x->y->cos(x*y); /* fonctions curryfiées */
g := (x)->(y)->(cos)((x*y))
[> g(1.);
(y)->(cos)((1.*y))
[> f:=proc(n) if (n=0) or (n=1) then 1; else f(n-1)+f(n-2); fi; end proc: /* une suite de fibonacci */
[> f(10);
89
[> u:=n->sum(1/k^2,k=1..n); /* série */
u := (n)->(sum)((1/k^2, k=1..n))
[> u(10);
1968329/1270080
[> v:=n->sqrt(6*sum(evalf(1/k^2),k=1..n)): /* une approximation de pi */
[> v(10),v(100),v(1000),v(10000);
(3.04936163598, 3.13207653181, 3.14063805621, 3.14149716395)
[>


Tout reste à faire, mais ça reste une bonne petite calculatrice de bureau.


Enfin, notons la possibilité de bytecompiler du code :

$ ./matl -h
./matl: unknown option `-h'.
Usage: matl
Options are:
-c used to compile the given
-b load bytecode
-o set the output file (out.tlo by default)
-help Display this list of options
--help Display this list of options


(Il ne s'agit en fait que des structures de données résultant du module Marshal)

retour lire/ajouter des commentaires [0]

[ Copyright 2007 © antoinexp, tous droits réservés ] designed by antoinexp, linuxearth@free.fr |