Możliwe jest robienie interesujących rzeczy za pomocą języków, które zwykle są uważane za języki składu. Na przykład, możesz skonstruować zbiór Mandelbrota używając PostScript .
W tym pytaniu MathOverflow sugeruje się, że LaTeX może być kompletny w Turingu . Oznacza to możliwość pisania dowolnych programów (chociaż może to nie być łatwe!). Czy ktoś zna jakiś konkretny przykład takiego programu w LaTeX, który robi coś bardzo nietypowego z językiem?
latex
turing-complete
ire_and_curses
źródło
źródło
Odpowiedzi:
W 13. wydaniu The Monad Reader Stephen Hicks pisze o wdrożeniu rozwiązania do konkursu ICFP (obejmującego nawigację łazikiem marsjańskim) w TeX-u, z obfitym wykorzystaniem makr. Co zabawne, wyjście rozwiązania po złożeniu jest postcriptową mapą ścieżki łazika.
źródło
Alternatywnie, Andrew Greene napisał interpreter języka BASIC w TeX-u ( więcej szczegółów ). Może się to uważać za nieco przewrotne
źródło
pgfmath
Biblioteka wciąż mnie zadziwia. Ale uwaga bardziej związana z Turingiem: możliwe jest napisanie rzeczywistej maszyny Turinga w TeX-ie, jak na http://en.literateprograms.org/Turing_machine_simulator_(LaTeX) . To po prostu sprytny sposób korzystania z rozszerzeń w TeX-ie.PostScript jest również kompletny w Turingu, jeśli przeczytasz instrukcję , będziesz zdumiony ogólnymi możliwościami programowania (przynajmniej ja byłem).
źródło
\ def \ K # 1 # 2 {# 2}
\ def \ S # 1 # 2 # 3 {# 1 # 3 {# 2 # 3}}
źródło
Nie jestem pewien, czy kwalifikuje się to jako programowanie jako takie , ale ostatnio zacząłem robić coś w rodzaju rzeczy zorientowanych obiektowo w LaTeX. (Nie musisz znać matematyki, aby postępować zgodnie z poniższym.) W ostatnich artykułach pisałem o kategoriach , które mają obiekty i morfizmy . Ponieważ było ich sporo, chciałem mieć spójny styl, aby, powiedzmy, 𝒞 była kategorią z typowym przedmiotem C i typowym morfizmem c . Wtedy ja też mam 𝒟 z D i D. Więc definiuję „klasę”, mówię „kategorię” (musisz być matematykiem, aby zrozumieć żart) i deklaruję, że C jest instancją tej klasy, a następnie mam dostęp do \ ccat, \ cobj, \ cmor i tak dalej. Powodem, dla którego nie wykonujesz \ cat {c}, \ obj {c}, \ mor {c} i tak dalej, jest to, że czasami te kategorie mają specjalne nazwy, więc po zadeklarowaniu instancji mogę bardzo łatwo zmodyfikować jej nazwę (po prostu przedefiniuj \ ccat - cóż, właściwie \ mathccat, ponieważ \ ccat jest opakowaniem, które wybiera \ mathccat w trybie matematycznym i \ textccat w trybie tekstowym). (Oczywiście jest to trochę bardziej skomplikowane niż sugeruje to powyżej, a rzeczy OO naprawdę przydają się, gdy chcę zdefiniować nową kategorię jako wariant starej (może nawet poradzić sobie z przypadkiem, w którym stara nie działa) jeszcze nie istnieje.).)
Chociaż może nie kwalifikować się jako faktyczne programowanie, używam go w artykułach i uważam go za przydatny - inne odpowiedzi (jak dotąd) mają bardziej wrażenie pokazania możliwości LaTeX niż rozsądnego rozwiązania praktycznego problemu.
źródło
Znam kogoś, kto napisał odpowiedź na problem konkursu ACM w LaTeX.
źródło