Wie arbeitet Djinn?
OK, also merke ich, dass ich das wahrscheinlich für den Rest meines Lebens bereuen werde, aber ... Wie funktioniert Dschinn eigentlich?
Die Dokumentation besagt, dass ein Algorithmus verwendet wird, der "eine Erweiterung von LJ" ist und auf eine lange verwirrende Abhandlung über LJT verweist. Soweit ich das beurteilen kann, handelt es sich um ein sehr kompliziertes System hoch formalisierter Regeln, um herauszufinden, welche logischen Aussagen richtig oder falsch sind. Aber das tut es nicht einmalStart um zu erklären, wie Sie eine Typensignatur in einen ausführbaren Ausdruck umwandeln. Vermutlich ist die gesamte formale Argumentation kompliziertbeteiligt irgendwie, aber das bild ist entscheidend unvollständig.
Es ist ein bisschen wie damals, als ich versucht habe, einen Pascal-Interpreter in BASIC zu schreiben. (Nicht lachen! Ich war erst zwölf ...) Ich habe stundenlang versucht, es herauszufinden, und am Ende musste ich aufgeben. Ich konnte einfach nicht herausfinden, wie zum Teufel man von einer riesigen Zeichenfolge mit einem ganzen Programm zu etwas kommt, das man mit bekannten Programmfragmenten vergleichen kann, um zu entscheiden, was man eigentlich tun soll.
Die Antwort ist natürlich, dass Sie etwas schreiben müssen, das "Parser" genannt wird. Sobald Sie verstehen, was dies ist und was es tut, wird plötzlich allesoffensichtlich. Oh, es ist immer noch nicht trivial, es zu codieren, aber dasIdee Ist einfach. Sie müssen nur den eigentlichen Code schreiben. Wenn ich mit zwölf von Parsern gewusst hätte, hätte ich vielleicht nicht zwei Stunden damit verbracht, nur auf einen leeren Bildschirm zu starren.
Ich vermute, dass das, was Djinn tut, im Grunde genommen einfach ist, aber mir fehlen einige wichtige Details, die erklären, wie all diese komplizierten logischen Übungen mit dem Haskell-Quellcode zusammenhängen ...