• [^] # Re: critiques

    Posté par . En réponse au journal La spécialité N.S.I. de la réforme du lycée ( épisode 2 ). Évalué à 5.

    La liste Ocaml est une fifo pour une très bonne raison d'immutabilité. Mais comprendre pourquoi elle est comme ça et pourquoi c'est très bien ainsi, est bien au delà d'une introduction à l'informatique.

    Les listes OCaml sont naturellement en mode LIFO : dernier arrivé, premier sorti. Ensuite c'est juste le principe des entiers unaires : en quoi c'est au-delà d'une introduction à l'informatique ? C'est ce que fait un enfant quand il apprend à compter avec ses doigts. Si des élèves de terminale ne comprennent pas cela, il y a un gros soucis.

    Les listes OCaml sont LIFO par construction :

    let push x l = x :: l
    let l = [] |> push `As |> push `Roi |> push `Dame;;
    val l : [> `As | `Dame | `Roi ] list = [`Dame; `Roi; `As]
    (* la première à sortir est la dernière arrivée, à savoir `Dame *)
    List.hd l;;
    - : [> `As | `Dame | `Roi ] = `Dame

    Ensuite, si l'on fait abstraction des valeurs contenus dans la liste, on obtient une liste de type unit list :

    List.map ignore l;;
    - : unit list = [(); (); ()]

    et une telle liste c'est les entiers unaires : une liste de bâtons, de traits, de points...

    Qu'est-ce qu'on fait, le plus souvent, avec une liste ? On utilise un fold, c'est à dire le principe du raisonnement par récurrence sur les nombres entiers. Il vient en deux versions : fold_left (mode LIFO) et fold_right (mode FIFO).

    Non, vraiment, je ne vois pas où est le problème d'aborder ces notions dans une introduction à l'informatique. Cela fait partie des concepts les plus simples à assimiler.

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.