let deriver_monome {coeff=c ; degre=d} = if d = 0 then {coeff=0 ; degre=0} else {coeff=c*d ; degre=d-1} ;; |
let deriver p = let rec d_rec p = match p with | [] -> [] | m::rem -> let m' = deriver_monome m in if m'.coeff = 0 then d_rec rem else m'::d_rec rem in d_rec p ;; |
let deriver p = List.fold_right (fun m r -> let m' = deriver_monome m in if m'.coeff = 0 then r else m'::r) p [] ;; |
let deriver p = let p0 = List.map deriver_monome p in let p' = List.filter (fun m -> m.coeff <> 0) p0 in p' ;; |
let deriver p = let rec d_rec p = match p with | ([]|[{degre=0}]) -> [] | m::rem -> let m' = deriver_monome m in m'::d_rec rem in d_rec p ;; |
([]|[{degre=1}])
,
qui regroupe les cas des polynômes de dérivée nulle.
Le motif-ou permet de regrouper les clauses de filtrage dont les
actions sont identiques.
On aurait pu écrire:
| [] -> [] | [{degre=0}] -> [] |
let deriver p = let rec d_rec p = match p with | m::rem -> let m' = deriver_monome m in m'::d_rec rem | ([]|[degre=0]) -> [] in d_rec p ;; Warning: this pattern is unused. |