Si les caractéristiques du langage OCaml vous séduisent mais que sa syntaxe vous rebut, ce journal peut peut-être vous intéresser.
Il s’agit du portage de TapTempo en Reason. Pour ceux qui ne connaissent pas Reason, en gros c’est OCaml avec une syntaxe proche de Javascript. Le code qui suis est le résultat de la conversion du code présenté dans le précédent journal en Reason.
open I18n.Gettext;
let run = (sampleSize, resetTime, precision) => {
let hitTimePoints = Queue.create();
print_string(s_("Hit enter key for each beat (q to quit).\n"));
while (input_char(stdin) != 'q') {
let currentTime = Unix.gettimeofday();
if (Queue.is_empty(hitTimePoints)
|| currentTime
-. Queue.top(hitTimePoints) > resetTime) {
Queue.clear(hitTimePoints); /* Reset if the hit diff is too big. */
print_string(
s_("[Hit enter key one more time to start bpm computation...]\n")
);
} else {
let occurenceCount = Queue.length(hitTimePoints);
/* Remove the older time from hitTimePoints with Queue.pop if the sample size is reached.
Otherwise it is kept in the queue with Queue.top. */
let olderTime =
Queue.(
if (occurenceCount < sampleSize) {
top;
} else {
pop;
}
)(
hitTimePoints
);
let bpm =
60. *. float_of_int(occurenceCount) /. (currentTime -. olderTime);
Printf.printf(f_("Tempo: %.*f bpm%!"), precision, bpm);
};
Queue.add(currentTime, hitTimePoints);
};
print_string(s_("Bye Bye!\n"));
};
let () = {
let (sampleSize, resetTime, precision) = Options.createFromArgs(Sys.argv);
run(sampleSize, resetTime, precision);
};
Voilà, je n'ai pas grand chose d'autre à ajouter.
# Cueillette de fruit à portée de main
Posté par Thomas Douillard . Évalué à 2.
L’arbre s’est révélé fertile et robuste. Il devint touffu et grandit rapidement, fleurit vite, certains fruits furent très rapidement murs. Ils furent cueillis :)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.