Je lis sur LISP.
Je comprends comment fonctionne la notation des préfixes à un certain niveau, mais je me demandais s'il y avait des astuces pour la rendre intuitive.
Je lis sur LISP.
Je comprends comment fonctionne la notation des préfixes à un certain niveau, mais je me demandais s'il y avait des astuces pour la rendre intuitive.
Réponses:
Le lire mentalement de gauche à droite comme langue parlée avec les bons verbes peut aider. Par exemple (+ 3 2) pourrait être "ajouter trois et deux". Dans le cas plus général, vous pouvez dire "effectuer $ opération sur $ opérandes". Appliqué au même cas: "Effectuez l'opération d'ajout sur trois et deux".
( = 1 2 )
et( > 4 2 )
Des trucs? Pourquoi?
Cela ne vous semble pas encore intuitif, car votre analyseur mental n'y est pas habitué. Cela deviendra meilleur si vous l'utilisez et le lisez encore et encore.
Vous pourriez y voir une sorte d'appel de fonction:
(operator operand1 operand2 ...)
Il n'y a rien de très spécial à ce sujet. Si vous surchargez des opérateurs en C ++ (et de nombreux autres langages qui le permettent), vous devez souvent définir ce type de fonction exactement de cette façon:
MyClass operator+(MyClass const& x, MyClass const& y);
De nombreuses langues utilisent un mélange de préfixe, d'infixe et même de postfixe.
Lisp utilise uniquement le préfixe - par défaut. Si sin (x) est intuitif par rapport aux mathématiques, alors (sin x) n'est pas loin. Si se déplacer (chien, maison) est un appel de procédure traditionnel, alors à Lisp c'est juste (déplacer le chien à la maison).
Lisp ne fait aucune exception pour les mathématiques et traite +, -, * et d'autres comme les appels de fonction ordinaires.
Lorsque (finalement) "Tout est un appel de fonction" (ou une forme spéciale, ou une macro-expansion, les deux ayant la syntaxe de surface de "l'appel de fonction") cliqué, cela semblait assez naturel.
Donc, car (= 1 2)
je lis cela comme «appelez la comparaison numérique égale sur 1 et 2».