Je commence à apprendre Haskell . Je suis très novice dans ce domaine et je suis en train de lire quelques livres en ligne pour mieux comprendre ses concepts de base.
L’un des "mèmes" dont les habitués ont souvent parlé, est l’ensemble "s’il compile, cela fonctionnera *" - ce qui, à mon avis, est lié à la force du système de caractères.
J'essaie de comprendre pourquoi exactement Haskell est meilleur que les autres langages statiquement typés à cet égard.
En d'autres termes, je suppose qu'en Java, vous pourriez faire quelque chose de odieux, comme enterrer
ArrayList<String>()
pour contenir quelque chose qui devrait vraiment l'être ArrayList<Animal>()
. La chose odieuse ici est que votre string
contient elephant, giraffe
, etc., et si quelqu'un le met Mercedes
- votre compilateur ne vous aidera pas.
Si je l'ai fait faire ArrayList<Animal>()
ensuite, à un moment donné plus tard dans le temps, si je décide de mon programme n'est pas vraiment sur les animaux, il est sur les véhicules, alors je peux changer, par exemple, une fonction qui produit ArrayList<Animal>
pour produire ArrayList<Vehicle>
et mon IDE dois me dire partout là - bas est une pause de compilation.
Mon hypothèse est que c'est ce que les gens entendent par système de type fort , mais il ne m'est pas évident de savoir pourquoi Haskell est meilleur. En d'autres termes, vous pouvez écrire du bon ou du mauvais Java, je suppose que vous pouvez faire la même chose en Haskell (c'est-à-dire insérer des éléments dans des chaînes / entêtes qui devraient être des types de données de première classe).
Je pense que je manque quelque chose d'important / basique.
Je serais très heureux de voir l'erreur de mes manières!
Maybe
ne mentionnent que vers la fin. Si je devais choisir juste une chose que les langues plus populaires devraient emprunter à Haskell, ce serait ça. C'est une idée très simple (donc pas très intéressante d'un point de vue théorique), mais cela seul rendrait notre travail beaucoup plus facile.