Jak działa Djinn?

OK, więc zdaję sobie sprawę, że prawdopodobnie będę tego żałować do końca mojego życia, ale ... Jak naprawdę działa Djinn?

Dokumentacja mówi, że używa algorytmu, który jest „rozszerzeniem LJ” i wskazuje na długą mylącą pracę na temat LJT. Jak mogę stwierdzić, jest to najlepszy, skomplikowany system wysoce sformalizowanych reguł do określania, które stwierdzenia logiczne są prawdziwe lub fałszywe. Ale to nawet nie działazaczynać aby wyjaśnić, w jaki sposób zamieniasz podpis typu na wyrażenie wykonywalne. Przypuszczalnie wszystkie skomplikowane rozumowanie formalne jestzaangażowany jakoś, ale obraz jest niezwykle niekompletny.

Trochę tak, jak kiedyś próbowałem napisać interpretator Pascala w języku BASIC. (Nie śmiej się! Miałem tylko dwanaście lat ...) Spędzałem godziny próbując to rozgryźć, aw końcu musiałem się poddać. Po prostu nie mogłem się zorientować, jak do cholery dochodzisz z gigantycznego ciągu zawierającego cały program do czegoś, co można porównać ze znanymi fragmentami programu, aby zdecydować, co właściwie zrobić.

Odpowiedź jest oczywiście taka, że ​​musisz napisać rzecz zwaną „parserem”. Gdy zrozumiesz, co to jest i co robi, nagle wszystko staje sięoczywisty. Och, wciąż nie jest trywialne kodowanie go, alepomysł jest proste. Musisz tylko napisać właściwy kod. Gdybym wiedział o parserach, gdy miałem dwanaście lat, może nie spędziłbym dwóch godzin, wpatrując się w pusty ekran.

Podejrzewam, że to, co robi Djinn, jest zasadniczo proste, ale brakuje mi ważnych szczegółów, które wyjaśniają, jak cała ta skomplikowana gimnastyka logiczna odnosi się do kodu źródłowego Haskella ...

questionAnswers(3)

yourAnswerToTheQuestion