2009舌足らずなブログプログラミングやLISP系言語の話題多め。人様に見せるようなものは出来なかったのでとりあえず使ってみて分かったことだけでも書いておきます。これからnewLISPを使ってみようかと思っている人の参考にでもなれば、と。...とにかくたくさん。※当方使ったことないです。OpenGLは面白いかも。(訳してみたもの)ラムダ式はリストと同様に扱える。動的束縛この辺はEmacsLispに似ている。ドット対が存在しない。関数の引数は足りなくても余分にあってもよい。足りない引数はnilに束縛される。これはnewLISP特有のものではなく、Interlispの特徴でもある。(暗黙のインデックス機能)リストや文字列などのシーケンスにアクセスする機能。一部破壊的な関数に置き換わっている。マクロも引数を評価しない点では参照渡しとほぼ同等。コンテキストLISP-1(関数と変数の名前空間が共有)であるnewLISPに複数の名前空間を提供する機能CommonLispのパッケージの概念と似ているかもしれないこれを使えばマクロ定義においての外部からの変数束縛を避けることが出来る。ハッシュの代用にもなる。a))組み込み関数は350個くらい。以下は全て同じ文字列を表す。バックスラッシュが少し見やすくなるかも。"C:\\home\\lxuser\\newlisp"{C:\home\lxuser\newlisp}[text]C:\home\lxuser\newlisp[/text]主に不満な点http://lisperblog.blogspot.com/2008/11/blog-post_18.html関数名に予約されていて変数に使えない名前がある。これはたまにイラッとくる。argsエラーが貧弱。(デバッガはあるらしいが)「リスト遊び」がしにくい。(ドット対がないためconsがほぼlistと同じ)マクロが書きにくい。(名前空間共有、`,@がない、macroexpandがない)シーケンスを扱う関数全てがunicode対応というわけではない。"f"とか、arcの機能がちらほら。歴史的に考えてnewLISPの方が先なんだろうけど。check-parensこれをもうちょっと弄ってbefore-save-buffer-hookとかに引っ掛ければ便利そう。b」等は通常操作と同じ一つ前に開いたバッファにもどります。kill-bufferしたときだけグループ化された前のファイルに戻ります。Elisp/タブでバッファを切り替えるどうりでkill-bufferしたとき元のバッファに戻らないわけだ。パッチも紹介されているが、どうやらフック関数のコメントアウトだけなのでelispで修正できる範囲のよう。'tabbar-buffer-kill-buffer-hook)直った直った。この記事更新したら直った。つもりだったのに、最近まですっかり忘れていたような気がする今日この頃です。Wikiに投稿するのもありなんですが、あまりに雑多すぎて分類に困りそうなのでブログの方にしました。(気が小さいなんて言えないです...)普段使っている関数群なので、そこそこ枯れていると思います。→http://paste.lisp.org/display/75922以下軽く解説keyboard-quitほとんどquitと同じですが、マークがクリアされます。kill-region(C-w)のうっかりタイプを防ぐ効果があります。(それでもたまに誤爆しますが)リージョンを反転表示するrv-regionとの併用がおすすめ。そこまでバック、それ以外は普通の(goto-bol)を呼び出します。comit-delchar-or-maybe-eof同じくshell-modeにて、(point)がバッファの末尾ならプロセスをkillします。current-wordGoogle検索など、interactiveで文字列を受け取る関数に使えます。C-sとタイプしてしまったイライラを軽減します。文字コードを指定してバッファを開き直す項目をコンテキストメニューに追加します。revert-bufferのGUI版みたいなものです。ファイル名を持たないバッファだとエラーになるけど、まあいいかな。backward-delete-word主にミニバッファでディレクトリをひとつ上にするときに使います。豪華なものが欲しいですか?ミニバッファにて単語単位でバックスペースtips/ミニバッファでひとつ上のディレクトリへ今回はここまで。地方県民はUSTREAMで我慢すればいいや、と思っていた結果がこれですか。前回のTT#1では、発表者全員より撮影許可を頂けましたので、内容全編を中継/アップロード致しましたが、今回は、すべての発表者の方に撮影承諾を頂けておりませんので、一部内容の中継/アップロードができません。(hogehoge))Emacsのような動的束縛を使うなら上のように書くのがたぶん一般的なんだろうけど、動的束縛といえばprogvなんてものがあることに気づいたので以前自分で書いたものを引っ張ってきてみた。,@val))))body部を変数束縛の外で実行する点では間違っていないと思う(たぶん)。実行してみたところトップレベルではうまく動いているよう。4)ただしprogvを含む関数をコンパイルすると駄目になった。#'#:progv-form350)))))labelsの展開がうまくいってないらしく、内部関数名"#:progv-form350"が残っている。ここまで辿ったけどコンパイルの動作がサッパリなのでここでお手上げ。labels使わないでprogv実装しろってことかなあ。R25.jpなんと懐かしい...見ていたのは小・中学時代だったかな。日曜日の深夜が楽しみだったよ。現在のインタビュー時の写真を見て「変わんないなー」とにんまり。一度にんまりしてしまった。なすびさんも元気そうで何よりですね。autoload関数で指定された関数は呼び出されるまでロードされません。いうモジュール一覧を参照出来ないかと思ってこんなものを作りました。利用する箇所が見当たらないので、ネタということで。http://paste.lisp.org/display/75440まあ、autoload-function-pを弄っただけなんですが。find-all-symbolsを使っているのでコンパイルしないと重いです。らないし、検索してみても答えは出ず。共有2009年2月10日火曜日[xyzzy]HexlのPatch勉強不足以上に実践不足が否めないと思う今日この頃。テストが終わった(笑)のでちまちまとアウトプットをしていこうと思います。たいしたものではないですが。Hexl@xyzzyのpatchNANRIさん配布のHexlに対するpatchです。気がするのでひっそりと。'equal)xyzzylispだけでhexl-modeを再現は一度挑戦して挫折したなあ。TEXT"の形式でバッファ表示させようとしたけど、関数のコンパイルをしても1Mのファイル読み込みに10秒かかったところでアウト。バイト単位の読み込みはまずかったのかもしれない。実践CLにもMP3のID3パーサが紹介されているくらいだからlispでバイナリファイルを扱うのは無茶ではないんだと思う。ありがとうございます。Wikiファイルのヘッダ部分を見ると、移植元のhexl.elのコードは1994年らしいです。Inc.一方、NANRIさん移植のhexl.lは2001年もの。更が加えられているみたいでした。追いつかないバグが残っているようです。"hexl")そんなわけで、コメントをいただいて恐縮ですがしばらくは使い慣れたHexlを弄ろうかと思います。(Atom)自己紹介koshタブレット片手に転々としています。