[latex] LaTeX가 Turing 완료라고 들었습니다. LaTeX로 작성된 프로그램이 있습니까?

일반적으로 조판 언어로 생각되는 것으로 흥미로운 일을 할 수 있습니다. 예를 들어, Mandelbrot 세트를 구성 할 수 있습니다. postscript를 사용하여 을 .

이 MathOverflow 질문 에서 LaTeX가 Turing-complete 일 수 있음을 제안 합니다. 이것은 임의의 프로그램을 작성할 수있는 능력을 의미합니다 (쉽지 않을 수도 있습니다!). LaTeX에서 그러한 프로그램의 구체적인 예를 아는 사람이 있습니까?



답변

The Monad Reader 13 호 에서 Stephen Hicks는 매크로를 많이 사용하여 TeX의 ICFP 대회 (화성 탐사선 내비게이션 포함)에 대한 솔루션 구현에 대해 썼습니다. 흥미롭게도 조판시 솔루션의 출력은 로버 경로의 포스트 스크립트 맵입니다.


답변

또는 Andrew Greene은 TeX에서 BASIC 인터프리터를 작성 했습니다 ( 자세한 내용 ). 이것은 약간 비뚤어진 것으로 간주 될 수 있습니다.


답변

pgfmath라이브러리는 아직도 저를 깜짝 놀라게한다. 그러나 좀 더 튜링 관련 메모에서 : http://en.literateprograms.org/Turing_machine_simulator_(LaTeX)에 따라 TeX에서 실제 튜링 머신을 작성할 수 있습니다 . . TeX에서 확장을 사용하는 멋진 방법입니다.

PostScript는 Turing도 완벽 합니다. 매뉴얼 을 읽으면 그것의 일반적인 프로그래밍 기능에 놀라게 될 것입니다 (적어도 저는 그렇습니다).


답변

\ def \ K # 1 # 2 {# 2}

\ def \ S # 1 # 2 # 3 {# 1 # 3 {# 2 # 3}}


답변

이것이 프로그래밍 자체에 해당하는지 확실하지 않지만 최근 LaTeX에서 Object Oriented와 같은 작업을 시작했습니다. (다음을 따르기 위해 수학을 알 필요는 없습니다.) 최근 논문에서 저는 객체형태 를 가진 범주 에 대해 글을 썼습니다 . 그 중 상당수가 있었기 때문에 ?은 전형적인 객체 C 와 전형적인 모피 즘 c 가있는 카테고리가되도록 일관된 스타일을 원했습니다 . 그런 다음 D 와 함께 ?d. 그래서 저는 “클래스”를 정의하고 “카테고리”라고 말하고 (그 농담을 이해하려면 수학자 여야 함) C가이 클래스의 인스턴스임을 선언 한 다음 \ ccat, \ cobj, \ cmor에 액세스 할 수 있습니다. 기타 등등. \ cat {c}, \ obj {c}, \ mor {c} 등을하지 않는 이유는 때때로 이러한 범주에 특별한 이름이 있기 때문에 인스턴스를 선언 한 후 이름을 매우 쉽게 수정할 수 있기 때문입니다. (단순히 \ ccat을 재정의하십시오. \ ccat은 수학 모드에서 \ mathccat을 선택하고 텍스트 모드에서 \ textccat을 선택하는 래퍼이기 때문에 실제로 \ mathccat입니다). (물론 위의 제안보다 조금 더 복잡하고 OO 항목은 새 카테고리를 이전 카테고리의 변형으로 정의하고 싶을 때 정말 유용합니다 (이전 카테고리가 아닌 경우도 처리 할 수 ​​있습니다). 아직 존재하지 않습니다.).)

실제 프로그래밍으로 인정되지는 않지만 논문에서 사용하고 있으며 유용하다고 생각합니다. 다른 답변 (지금까지)은 실제 문제에 대한 합리적인 솔루션보다 LaTeX의 기능을 과시하는 느낌이 더 많습니다.


답변

LaTeX에서 ACM 콘테스트 문제 에 대한 답을 쓴 사람을 알고 있습니다.


답변