Ce qui serait super cool maintenant, c'est que quelqu'un, pas forcément toi, mette une version plus OCaml comme on en voit traîner régulièrement sur LinuxFr :)
Qu'entends-tu par plus OCaml ? Tu veux dire dans un style fonctionnel ? Là son code est fondamentalement impératif (le langage est multi-paradigme) et les traits impératifs se prêtent bien au problème. Ceci étant on pourrait ne pas mettre de boucle while, mais une fonction récursive à la place, du genre :
c'est ce genre de code dont tu parles ? (ici j'utilise une horloge monotone et un module à ma sauce pour gérer la logique de calcul du tempo)
L'avantage que je vois, c'est que cela évite les imbrications, des fois dure à suivre, des if then else. Ici on est protégé des exceptions et seule la touche enter peut être appuyée en cadence. Sans cela, un test comme :
générera une exception (non rattrapée) quand le flux d'entrée est fermé et, selon que l'on accepte ou non n'importe quel caractère, cela peut changer le résultat de celui-ci :
# seule la touche enter
$ (for i in $(seq 6);doecho'taptempo'; sleep 0.5;done)| ./taptempo | grep bpm | wc -l
5# n'importe quel caractère
$ for i in $(seq 6);doecho'taptempo'; sleep 0.5;done)| ./taptempo | grep bpm | wc -l
53# sans compter le calcul du tempo qui s'envole ;-)
Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.
[^] # Re: Lisibilité
Posté par kantien . En réponse au journal Portage de TapTempo en OCaml. Évalué à 3. Dernière modification le 12 mars 2018 à 10:41.
Qu'entends-tu par plus OCaml ? Tu veux dire dans un style fonctionnel ? Là son code est fondamentalement impératif (le langage est multi-paradigme) et les traits impératifs se prêtent bien au problème. Ceci étant on pourrait ne pas mettre de boucle
while, mais une fonction récursive à la place, du genre :c'est ce genre de code dont tu parles ? (ici j'utilise une horloge monotone et un module à ma sauce pour gérer la logique de calcul du tempo)
L'avantage que je vois, c'est que cela évite les imbrications, des fois dure à suivre, des
if then else. Ici on est protégé des exceptions et seule la toucheenterpeut être appuyée en cadence. Sans cela, un test comme :générera une exception (non rattrapée) quand le flux d'entrée est fermé et, selon que l'on accepte ou non n'importe quel caractère, cela peut changer le résultat de celui-ci :
Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.