現在のバージョンとの差分を見る
編集履歴ページに戻る
APLはキーボード入力と画面出力がアレなのでしばらく不遇だったが、
UnicodeにAPL文字が入ってからちょっとはましになったかもしれない、と思い、
APLの方言である[http://www.aplusdev.org/ A+]の学習を開始してみた。
* 文字コードの壁
APL諸言語と同じく、
A+もASCIIコードの非文字領域をAPL文字とみなして評価しているので、
UnicodeとA+文字を相互に変換してやる必要がある。
** Emacsから使う
A+をEmacsのUnicode入力から使うには[http://stud4.tuwien.ac.at/~e0225855/unicapl/unicapl.html UnicAPL]のapl.elが恐らく必須なので、いれておくこと。
これと、[[sf:openAPL]]付属のapl-mode.elを組み合わせて、
aplus-modeをでっちあげてみた。
- [[files:aplus-mode.el]]
これをいれて、.emacsに、
{{{
(setq auto-mode-alist
(append
'(("\\.\\+\\'" . aplus-mode))
auto-mode-alist))
(autoload 'aplus-mode "aplus-mode" "edit A+ script." t nil)
}}}
を加えることにより、拡張子''''''.+''''''でaplus-modeで開くようになる。
あとは、M-x set-input-method apl-asciiでapl.elのAPL入力モードに入れるようになるので、
プログラミング環境はほぼ完成。まだ対話入力モードがないけど我慢。
** それ以外での入力
uim-aplも作ってみた。WebページにAPLのコードを貼りたいときには便利。
- [[files:uim-apl.scm]]
uim.elでもascii-apl-direct-uim, ascii-apl-unic-uimで入力できるようにのすけさんに対応していただいた。
深夜(というか朝)にわざわざ面倒をおかけします。感謝。
* プログラムを書いてみる
{{{
⍝ ここはコメント
"hello,world."
sys.exit 0
}}}
たぶん、A+に関しては次のエントリから意味不明な文字が飛び交います。
A+にはASCIIで入力するモードもあるのだけど、こっちは使いません。
APLだもんね。
----
追記:
- 一部の文字がUnicAPLの変換テーブルにないので(⍨等)、
A+で解釈できないまま保存されることがある。
テーブルに対応表を追加するだけでいいのだが、なかなか大変だ。
- 出力される文字もAPLコードなので、フィルタが必要となる。たとえば、"{minus}1"は"−1"となって出力される("-1"ではないので注意)。
- uim-aplが誤ったURLを指してので訂正した。