LISP, on, TeX の検索結果:

TeX言語でレイトレーシングを実装する話

…可能性を鑑み,自前でCPS変換したところ処理が通った.詳しい検証はしていないが,main memory不足に悩まされたら思い出してほしい. まとめ TeX言語はチューリング完全なので,任意のプログラムを記述できる. その一芸として,レイトレーシングを実装した. Merry TeX'mas(ちょっと粗すぎた……). *1:私の出身大学では学部生の実験で採用されていた.東大CPU実験でも採用されている *2:lisp-on-tex(TeX言語製LISPインタプリタ)の作成経験から

LaTeXはExcel方眼紙の夢を見るか

…処理が非常に遅いのでお勧めはしない. *3:そもそも,Excel方眼紙のターゲットを「表」とみるのが誤りか *4:なお,筆者は参加申し込みを忘れていた模様 *5:実装上の都合が大きな要因.私はそのようなExcel方眼紙が特に嫌いなので,実装する予定もない. *6:こちらについては,時間があれば実装する見込み. *7:ただし,現状は座標系の違いにより配置が面倒 *8:LISP on TeXより数段楽 *9:もっとも,印刷まで考慮するとExcelはWYSIWYGとは言い難いが……

もうひとつのTeXがチューリング完全であることの証明

TeX

…SICインタプリタ LISP on TeX 拙作.TeX言語で実装されたLISPインタプリタ.LaTeXのパッケージとして動作 bxgrassator TeX言語で実装されたGrassインタプリタ.LaTeXのパッケージとして動作 bxbluf TeX言語で実装されたBrainf*ckインタプリタ.LaTeXのパッケージとして動作 avremu Atmel AVRというマイクロプロセッサのTeX言語で書かれたエミュレータ ELVM TeXバックエンド 前回の記事参照 私の知る…

ELVM Compiler Infrastructureバックエンド作成のすゝめ

…変わってくる.作者がLispインタプリタをPietで動かしたように,記述が困難な言語で大規模なプログラムを生成しやすくなるのだ. さらに,ELVMの大きな特徴として,ELVMそのものがELVMでコンパイルできることが挙げられる.つまり,ELVMのバックエンドに追加されている言語でCコンパイラをお手軽に作ることができるようになるのだ. 話は変わり,近年,私のTLにおいて次の事象が観測された. Vim の勉強会で空気読まずに TeX の話したら(Vim の話も申し訳程度にはしたけ…

LISP on TeX v2.0リリースノート

…じめに 10/25,LISP on TeXのv2.0(CTAN: Package lisp-on-tex)をリリースした.簡単に今回のリリース内容をまとめておく. READMEの更新 READMEをMarkdown形式に移行した*1.結果,CTANのページ上からREADME.mdが見れるようになっているはずである. ごみ集め機構(GC)の実装 通常のTeXプログラミングと違い,LISP on TeXでは内部で大量の制御綴りをCONSセルとして使用する.そのため,大量に資源消費…

TeXだってテスト書きたい(続)

TeX

…est}{Example}{label} \Expect*{\the\numexpr1+2}{3} \end{qstest} \begin{qstest}{Example-fail}{label} \Expect*{\numexpr1+2}{3} \end{qstest} \end{qstest} \end{document} で実行した結果がこちら. やったぜ.ちなみに,これはLISP on TeXの今後の開発で利用するために作成したスクリプトで,実際に運用を開始している.

TeXだってテスト書きたい

TeX

…純にテストできない.LISP on TeXのテストコードを記述しようとした際,これは大きな問題だった.ここで,私はLISP on TeXのマクロのほとんどが空のトークンに展開され,副作用のみが重要であるという特徴を利用した.LISP on TeXのコードでは大きすぎるため,次の例を考える.マクロ\hogeは二引数をとり,\fugaに第一引数と第二引数の和を代入することを目的としたマクロである.当然,展開結果には空のトークン列であることを想定している. \newcount\fu…

LISP on TeX v1.3

TeX

久しぶりの更新はLISP on TeXバージョンアップな話.更新点は次の2つ. 環境のバグ修正 one shot continuationsの実装 詳細を示す. 環境のバグ修正 これは,Twitterやここで示されたバグ.要はローカル変数のスコープがおかしくなってしまっている.簡単な例を示すと, \lispinterp{((\lambda (\n) ((\lambda (\n) \n) :1)) 'hoge')} の結果が:1でなく'hoge'になる.原因はv1.2で追加した…

LISP on TeXを作る(評価器編2)

TeX

…りであり,展開するとLISP on TeXにおけるオブジェクトの形式をしたトークン列を得ることができる.consセルの評価規則は簡単で, CARを評価して,適用可能なオブジェクトを得る CDRを引数として,さきほど得られたオブジェクトに適用する 関数やクロージャの場合は各引数が評価される.マクロの場合はそのまま引き渡す だけである.consセルの評価規則の実装,\@eval@consを確認しよう. \def\@eval@cons#1#2#3{\@@eval@cons#1{#2…

LISP on TeXを作る(評価器編1)

TeX

LISP on TeXネタの最終消費作業*1.今回は評価器編.ここが本丸と言いたいところだったが,あまりに分量が多かったため,評価器編は2回に分割する.前編はevalの基本構造,後編は関数適用がメインである. データ構造と評価の基本構造 再確認になるが,LISP on TeXで用いられるデータはすべて,次の構造をしている. \@tlabel@hoge{contents} ここで,制御綴り\@tlabel@hogeは型の情報を示すラベル(型ラベル)である.波括弧の中身はデータ本…

LISP on TeXを作る(パーサ編)

TeX

LISP on TeXネタを全部消費して,新たなるTeX芸へ向かうためのソリューションその2.今回はパーサ編.要はS式を解釈して前回のデータ構造編で説明したデータへ変換するマクロがどのように構成されているかを示す.これから説明するマクロは,lisp-read.styにそのほとんどが記述されている. はじめに 実装説明に入る前に,パーサ全体にかかる注意事項を述べておく.まず,LISP on TeXの文法はLL1であるので,字句解析と構文解析をごちゃ混ぜにした実装になっている.ま…

LISP on TeXを作る(データ構造編)

TeX

…r 2013のトリはLISP on TeXとなった.今年はTUG2013での発表という大イベントがあった.そのときはなるべく「急カーブ注意」なことは避けてきたのだが,標識3個くらいまでならむしろやったほうが良かったのではないかと後悔したのが記憶に新しい*1.今日はそのリベンジとして,LISP on TeXの中身を説明していこうと思う*2.今回はデータ構造にのみ言及する.TeXでプログラミングしたいキチガイコアな人からLISP on TeXの型を拡張したいという変態まで,参考に…

TeXと異世界の交わり

…で注意. はじめに LISP on TeXがCTANに登録されてから,そろそろ一週間が経つ.TeXLiveやMikTeXに取り込まれるなどもした.更に,CTANのTopicsに「exec-foreign」が追加され,そこにlisp-on-texが配置された*1.しかし,これ以外にも,旧来からTeXと他の言語を組み合わせる試みは多数行われてきた.そこで,ここではそれらの紹介を行う.まず,TeXと他の言語を組み合わせる手法は,TeXエンジンの中で解決するものと外部の処理系に頼るも…

Load to CTAN(CTANに載るまで)

TeX

祝 LISP on TeXのCTAN入り 全国のTeX Liveをお使いの皆さん.ようこそ,LISP on TeXへ.というわけで,LISP on TeXがCTAN*1に登録されました.TeX Liveで使えることは,@zr_tex8r: あわわわわわ、#texlive を update したら lisp-on-tex とかいう怖そうなパッケージが乗り込んできた。 #TeX2013-03-05 22:58:24 via webや@PowerPC7450: > sudo tlm…

LISP on TeX におけるパーサのフックな話

TeX

…てます(唐突に). LISP on TeX更新情報 最近,修士論文も無事に提出できたので,LISP on TeXに機能拡張とかしてみた. パーサのフック機能. LISP on TeXの整数型,dimen型,およびskip型にリテラルには,それぞれ決まったプレフィクスをつけることにしている. しかし,ユーザが新しい型を追加できない*1という問題があった.また,これ以上型を増やすと適当なプレフィクスがなくなってしまうという問題も出てきた.そこで,汎用的にパーサを操作できる構文を追…

アドベントカレンダー二日目 ― \newif\ifnextyear \ifnextyeartrue

TeX

…ergroup と LISP on TeX での利用法を一例としてあげようと思う. そもそも \aftergroup ってなによ 黄色(LaTeX2e マクロ & プラス プログラミング基礎解説)*1にも載っていない*2が,TeX の強力なトークン展開の制御機能ひとつである.\aftergroup は現在のグループが終わった地点での動作をフックできる.使い方は,\aftergroupで,トークンがグループ終了時に挿入される.複数指定したときは,指定した順序でそのすべてのトーク…

LISP on TeX で千反田えるな話(3)

TeX

…(1):概略"さて,LISP on TeX の時間である. といっても,プログラム的には簡単なので,今回はpTeX限定な命令を使ってやってみたがメイン.漢数字にするマクロ部分に,pTeXプリミティブ\kansujiを使ってみた.\kansujiは \kansuji 1234 のようにして使う.結果は「一二三四」に展開される.TeXでいうところの\romannumeralとか\numberと同じ用法. 0,1,...,9に使う文字は設定可能で,デフォルトは〇,一,…,九.この出…

LISP on TeX でマンデルブロな話

TeX

…ずだ.もっと言えば,LISP on TeX で記述できるはずだ. というわけで書いてみた.精度は時間がかかるのでだいぶ抑えているけど. 以下ソース \documentclass[a3paper,landscape]{jsarticle} \usepackage[dvipdfm,margin=1pt]{geometry} \usepackage{lisp} \lispinterpl{% (\define \maxloop :100) (\define \scale :100) …

現在の LISP on TeX における環境の実装と問題点

今日は LISP on TeX (https://bitbucket.org/hak7a3/lisp-on-tex) の環境の実装および問題点について.現状,LISP on TeX *1 の環境は次のようなトークン列になっています. \keyi{valuei}\keyii{valueii}……\keyn{valuen} 対応を追加する際には,トークン列の先頭にペアを書き込む形になっています.\keyhogeに対応する値を引き出す際は,マクロの書式指定文字列を使ってとリ出すよう…

始めてみた & LISP on TeX でナベアツ

…ココ. これを拙作 LISP on TeX (https://bitbucket.org/hak7a3/lisp-on-tex)でやってみた.ソースコードはこんな感じ \documentclass{jarticle} \usepackage{lisp} \begin{document} \font\hoge=cmfi10 \def\NabeAzz#1{\lispinterpl{ (\define \nabe (\lambda \i (\lispif (\= (\- \i :1…