Ich fange an, Haskell zu lernen . Ich bin sehr neu darin und lese gerade ein paar Online-Bücher durch, um mir ein Bild von den grundlegenden Konstrukten zu machen.
Eines der 'Meme', von denen die Leute, die damit vertraut sind, oft gesprochen haben, ist das Ganze "Wenn es kompiliert, wird es funktionieren *" - was meiner Meinung nach mit der Stärke des Typensystems zusammenhängt.
Ich versuche zu verstehen, warum genau Haskell in dieser Hinsicht besser ist als andere statisch typisierte Sprachen.
Anders ausgedrückt, ich gehe davon aus, dass Sie in Java etwas Abscheuliches tun können, um etwas
ArrayList<String>()
zu enthalten, das wirklich sein sollte ArrayList<Animal>()
. Das Abscheuliche dabei ist, dass Ihre string
Inhalte elephant, giraffe
usw. vorhanden sind und wenn jemand sie einfügt, Mercedes
wird Ihnen Ihr Compiler nicht weiterhelfen.
Wenn ich esArrayList<Animal>()
dann zu einem späteren Zeitpunkt getan habe und mein Programm sich nicht wirklich um Tiere, sondern um Fahrzeuge dreht, kann ich beispielsweise eine Funktion ändern, die produziert ArrayList<Animal>
, um zu produzieren, ArrayList<Vehicle>
und meine IDE sollte es mir überall mitteilen ist eine Zusammenstellungspause.
Ich gehe davon aus, dass dies mit einem starken Typensystem gemeint ist, aber es ist mir nicht klar, warum Haskells besser ist. Anders ausgedrückt, Sie können gutes oder schlechtes Java schreiben. Ich nehme an, Sie können dasselbe in Haskell tun (dh Dinge in Strings / Ints packen, die wirklich erstklassige Datentypen sein sollten).
Ich vermute, ich vermisse etwas Wichtiges / Grundlegendes.
Ich würde mich sehr freuen, wenn mir der Irrtum gezeigt würde!
Maybe
erst gegen Ende erwähnen . Wenn ich nur eine Sache auswählen müsste, die populärere Sprachen von Haskell leihen sollten, wäre dies alles. Es ist eine sehr einfache Idee (aus theoretischer Sicht also nicht sehr interessant), aber dies allein würde unsere Arbeit so viel einfacher machen.