Journal Portage de TapTempo en Clojure

Posté par (page perso) . Licence CC by-sa
11
10
mar.
2018

Salut à tous.

Voici une version en Clojure. Rien de remarquable, juste qu'on affiche le tempo tous les 6 battements.
Il n'y a pas la prise en charge d'arguments ou d'internationalisation.

(ns taptempo.core
  (:import jline.console.ConsoleReader)
  (:gen-class))

(defn now []
  (System/currentTimeMillis))

(defn read-char []
  (-> (ConsoleReader.) (.readCharacter) char))

(defn calc-tempo [start end taps]
  (* (/ taps (- end start)) 1000 60))

(defn print-tempo [tempo]
  (println (format "Tempo: %.2f bpm" (float tempo))))

(defn -main [& args]
  (println "Appuyer sur la touche entrée en cadence (q pour quitter).")
  (loop [start (now), count 0]
    (when-not (= (read-char) \q)
      (if (= count 6)
        (do
          (-> (calc-tempo start (now) count)
              print-tempo)
          (recur (now) 0))
        (recur start (inc count))))))

Ils sont fun tous ces journaux !

  • # Compact

    Posté par (page perso) . Évalué à 2.

    Mis à part la parenthésite aigüe héritée de Lisp, cette version est vraiment compacte ! Merci :-)

    • [^] # Re: Compact

      Posté par (page perso) . Évalué à 3.

      Merci à toi pour l'idée d'origine et aux auteurs pour les autres langages.
      C'est vraiment fun de comparer les langages avec chacun sa culture !

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.