# typevect=floatarraytypemat=vectarraytypesyst={m:mat;v:vect};;type vect = float arraytype mat = vect arraytype syst = { m: mat; v: vect }
# letaffiche_systemes=letw=Array.lengths.m.(0)andh=Array.lengths.minletc=h/2infori=0toh-1doPrintf.printf"| ";forj=0tow-1doPrintf.printf" %8.2f "s.m.(i).(j)done;Printf.printf" |";ifi=cthenPrintf.printf" * "elsePrintf.printf" ";Printf.printf"| x_%-2d |"i;ifi=cthenPrintf.printf" = "elsePrintf.printf" ";Printf.printf"| %8.2f |\n"s.v.(i)done;Printf.printf"\n";;val affiche_systeme : syst -> unit = <fun>
# letax3={m=[|[|10.0;7.0;8.1;7.2|];[|7.08;5.04;6.0;5.0|];[|8.0;5.98;9.89;9.0|];[|6.99;4.99;9.0;9.98|]|];v=[|32.0;23.0;33.0;31.0|]};;val ax3 : syst ={m=[|[|10; 7; 8.1; 7.2|]; [|7.08; 5.04; 6; 5|]; [|8; 5.98; 9.89; ...|];...|];v=...}
# affiche_systemeax3;;| 10.00 7.00 8.10 7.20 | | x_0 | | 32.00 || 7.08 5.04 6.00 5.00 | | x_1 | | 23.00 || 8.00 5.98 9.89 9.00 | * | x_2 | = | 33.00 || 6.99 4.99 9.00 9.98 | | x_3 | | 31.00 |- : unit = ()
# letintervalordernextab=letrecauxa=ifnot(orderab)then[a]elsea::aux(nexta)inauxa;;val interval : ('a -> 'b -> bool) -> ('a -> 'a) -> 'a -> 'b -> 'a list =<fun>
# letrecerasl=matchlwith[]->[]|p::q->p::(eras(List.filter(funx->xmodp<>0)q));;val eras : int list -> int list = <fun>
# letera_gon=eras(interval(<)(funx->x+1)2n);;val era_go : int -> int list = <fun>
# letusage()=Printf.printf"Usage: premiers n\n";;val usage : unit -> unit = <fun>
# letmain()=ifArray.length(Sys.argv)<2thenusage()elseletn=int_of_stringSys.argv.(1)inifn<2thenusage()elseletr=era_goninList.iter(funx->Printf.printf"%d "x)r;Printf.printf"\n";;val main : unit -> unit = <fun>
main();;
$ ocamlc -o premiers premiers.mlou
$ ocamlopt -o premiers premiers.mlTest de l'exécutable :
$ premiers Usage: premiers n $ premiers 50 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 $ premiers 100 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
# letanalyse_couleursc=letl=ref[]infori=0to(Array.lengthc)-1doforj=0to(Array.lengthc.(0))-1doifnot(List.memc.(i).(j)!l)thenl:=c.(i).(j)::!ldone;done;List.rev!l;;val analyse_couleurs : 'a array array -> 'a list = <fun>
# letconstruire_tablel=Array.of_listl;;val construire_table : 'a list -> 'a array = <fun>
# exceptionFindofint;;exception Find of int
# lettrouve_indicect=letaux()=fori=0toArray.lengthtdoifc=t.(i)thenraise(Findi)done;raiseNot_foundintryaux()withFindi->i;;val trouve_indice : 'a -> 'a array -> int = <fun>
# letencodecaat=ifArray.lengtht>255thenfailwith"trop de couleurs (> 255)"elseleth=Array.lengthcaaandw=Array.lengthcaa.(0)inlets=String.create(h*w)inletns=ref0infori=0toh-1doforj=0tow-1doletci=trouve_indicecaa.(i).(j)tins.[!ns]<-char_of_intci;incrnsdonedone;s;;val encode : 'a array array -> 'a array -> string = <fun>
# typeimage_tdc={tdc:Graphics.colorarray;image:string;largeur:int;hauteur:int};;type image_tdc ={ tdc: Graphics.color array;image: string;largeur: int;hauteur: int }
# letto_image_tdccaa=lett=construire_table(analyse_couleurscaa)inlets=encodecaatin{tdc=t;image=s;largeur=Array.lengthcaa.(0);hauteur=Array.lengthcaa};;val to_image_tdc : Graphics.color array array -> image_tdc = <fun>
# letsauve_image_tdcimnom=letoc=open_outnominMarshal.to_channelocim[];;val sauve_image_tdc : 'a -> string -> unit = <fun>
# letfrom_image_tdcim=letr=Array.create_matrixim.hauteurim.largeurGraphics.blackinletns=ref0infori=0toim.hauteur-1doforj=0toim.largeur-1dor.(i).(j)<-im.tdc.(int_of_charim.image.[!ns]);incrnsdonedone;r;;val from_image_tdc : image_tdc -> Graphics.color array array = <fun>
# letvisuname=letic=open_innameinletim=Marshal.from_channelicinletcaa=from_image_tdciminletb=Graphics.make_imagecaainletsize=(string_of_int(Array.lengthcaa.(0)))^"x"^(string_of_int(Array.lengthcaa))inGraphics.open_graph(":0 "^size);Graphics.draw_imageb00;b;;val visu : string -> Graphics.image = <fun>