Es posible hacer cosas interesantes con lo que normalmente se consideraría lenguajes de composición tipográfica. Por ejemplo, puede construir el conjunto de Mandelbrot usando postscript .
En esta pregunta de MathOverflow se sugiere que LaTeX puede ser Turing completo . Esto implica la capacidad de escribir programas arbitrarios (¡aunque puede que no sea fácil!). ¿Alguien sabe de algún ejemplo concreto de un programa de este tipo en LaTeX, que hace algo muy inusual con el lenguaje?
latex
turing-complete
ire_and_curses
fuente
fuente
Respuestas:
En el número 13 de The Monad Reader , Stephen Hicks escribe sobre la implementación de la solución a un concurso ICFP (que involucra la navegación de un rover en Marte) en TeX, con un uso copioso de macros. Curiosamente, la salida de la solución cuando se compone es un mapa posdata de la ruta del rover.
fuente
Alternativamente, Andrew Greene escribió un intérprete BASIC en TeX ( más detalles ). Esto puede considerarse un poco perverso.
fuente
La
pgfmath
biblioteca todavía me sorprende. Pero en una nota más relacionada con Turing: es posible escribir una máquina de Turing real en TeX, según http://en.literateprograms.org/Turing_machine_simulator_(LaTeX) . Es solo una forma ingeniosa de usar expansiones en TeX.PostScript también es Turing completo, si lee el manual , se sorprenderá de sus capacidades generales de programación (al menos yo lo estaba).
fuente
\ def \ K # 1 # 2 {# 2}
\ def \ S # 1 # 2 # 3 {# 1 # 3 {# 2 # 3}}
fuente
No estoy seguro de si esto califica como programación per se, pero recientemente comencé a hacer algo un poco como cosas orientadas a objetos en LaTeX. (No es necesario saber nada de matemáticas para seguir lo siguiente). En artículos recientes, he estado escribiendo sobre categorías que tienen objetos y morfismos . Como ha habido bastantes de esos, quería un estilo coherente para que, digamos, 𝒞 fuera una categoría con el objeto C típico y el morfismo c típico . Entonces también tendría 𝒟 con D y d. Entonces defino una "clase", digo "categoría" (necesitas ser un matemático para entender la broma), y declaro que C es una instancia de esta clase, y luego tengo acceso a \ ccat, \ cobj, \ cmor Etcétera. La razón para no hacer \ cat {c}, \ obj {c} y \ mor {c}, y así sucesivamente, es que a veces estas categorías tienen nombres especiales y, por tanto, después de declarar la instancia, puedo modificar su nombre muy fácilmente (simplemente redefine \ ccat - bueno, en realidad \ mathccat ya que \ ccat es un contenedor que selecciona \ mathccat en modo matemático y \ textccat en modo texto). (Por supuesto, es un poco más complicado de lo que sugiere lo anterior y las cosas de OO realmente son útiles cuando quiero definir una nueva categoría como una variante de una anterior (incluso puede lidiar con el caso en el que la anterior no lo hace) t existe todavía.).)
Aunque puede que no califique como programación real, lo estoy usando en artículos y lo encuentro útil: las otras respuestas (hasta ahora) tienen más la sensación de mostrar las capacidades de LaTeX que de una solución sensata a un problema práctico.
fuente
Sé de alguien que escribió la respuesta a un problema de concurso de ACM en LaTeX.
fuente