Question

Je viens de lire un peu sur le HQ9 + langage de programmation ( http://esolangs.org/wiki/HQ9 , http://en.wikipedia.org/wiki/HQ9%2B et http://www.cliff.biffle.org/esoterica/hq9plus.html), et il me dit quelque chose au sujet d'un soi-disant « accumulateur » qui peut être incrémenté, mais pas accessible. Aussi, en utilisant la + ne manipule pas le résultat:

code

H+H

Résultat

Hello World
Hello World

Quelqu'un peut-il me expliquer comment cela fonctionne, ce que cela fait et si elle fait même un sens? Merci

Était-ce utile?

La solution

Après avoir écrit un Je pense que je peux dire de mise en œuvre, sans aucun doute qu'il fait n'a pas de sens du tout. Je vous conseille de ne pas inquiéter à ce sujet; il est une langue très stupide après tout.

Autres conseils

Il est une blague.

Il y a aussi une extension orientée objet de HQ9 +, appelé HQ9 ++. Il a une nouvelle ++ de commande qui instancie un objet, et, pour des raisons de compatibilité ascendante, incrémente également le registre accumulateur deux fois. Et encore une fois, car il n'y a aucun moyen de stocker, récupérer, accès, manipuler, imprimer ou affecter un objet, il est tout à fait inutile.

Ayant récemment terminé une mise en œuvre Clojure (qui suit) Je peux dire que l'accumulateur est absolument central à une mise en œuvre réussie de HQ9 +. Sans elle on serait laissé avec une mise en œuvre de HQ9 qui, tout sans doute digne en soi, est bien différente, et donc HQ9 + sans accumulateur, et l'instruction à l'incrémenter, serait donc pas être une implémentation de HQ9 +.

( NDLR: Bob a pris ses médicaments aujourd'hui, mais ils ont pas tout à fait encore fait effet, ainsi, de plus amples explications est peut-être nécessaire Ce que je crois que Bob essaie de dire est que HQ9 + est inutile en tant que programmation. la langue, en soi, mais sa mise en œuvre peut effectivement être utile dans le contexte d'apprendre à mettre en œuvre quelque chose avec succès dans une nouvelle langue OK, je vais aller recroqueviller tranquillement dans l'arrière du cerveau de Bob maintenant et le laisser se. retour à faire ... quoi que ce soit qu'il fait quand je ne suis pas garde le magasin ... ).

... Quoi qu'il en soit mise en œuvre suit Clojure:

(defn hq9+ [& args]
  "HQ9+ interpreter"

  (loop [program      (apply concat args)
         accumulator  0]
    (if (not (empty? program))
      (case (first program)
        \H (println "Hello, World!")
        \Q (println (first (concat args)))
        \9 (apply println (map #(str % " bottles of beer on the wall, "
                                      % " bottles of beer, if one of those bottles should happen to fall, "
                                      (if (> % 0) (- % 1) 99) " bottles of beer on the wall") (reverse (range 100))))
        \+ (inc accumulator)
            (println "invalid instruction: " (first program)))) ; default case
    (if (> (count program) 1)
       (recur (rest program) accumulator))))

Notez que cette mise en œuvre accepte uniquement les commandes passées dans la fonction en tant que paramètres; il ne lit pas un fichier pour son programme. On peut y remédier dans les versions ultérieures. Notez également que cette mise en œuvre est une « stricte » de la langue - la page originale (au

Il incrémente quelque chose de pas accessible, non spécification définie, et apparemment même pas vraiment utilisé. Je dirais que vous pouvez l'appliquer comme vous le voulez ou peut-être pas du tout.

La bonne réponse est celle qui a été laissé entendre par les autres réponses, mais pas tout à fait dit explicitement:. L'effet de incrémenter l'accumulateur est pas défini par la spécification du langage et à gauche comme choix de la mise en œuvre

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top