y2q_actionman’s ゴミクズチラ裏

内向きのメモ書きを置いてます

プログラミング

ファイルの末尾まで利くannotation

昔に記事にもした cl-annot-revisit というライブラリを、ちょっと前に Quicklisp に収録 してもらった。 github.com なんか空いていた Lisp Advent Calendar 2022 の記事として、 cl-annot-revisit に搭載したしょうもない機能について書いておこうと思う。…

Parenscript を使ってみた

ちょっとしたおもちゃを作るために Parenscript を使ってみたので忘れないうちに感想を書いておく。 github.com 経緯 上のプログラムは、元々は Common Lisp でちょっとした計算を行うものだった。 UI としては REPL をそのまま使っていた。 そのうち、 Lisp…

defvarがunboundな変数を作れることを生かしたい

この文章は、 Lisp Advent Calendar 2020 - Qiita の記事として 12/31 に書かれました。 今年は advent calender のことを年の瀬まですっかり忘れており、事ここに至って初めて思い出しております。 改めて当該 advent calender を見てみると思ったよりスカ…

cl-annot を再実装して cl-annot-revisit を作った

この記事は Lisp Advent Calender 2019 に便乗して書かれました。 先週は C++ と Common Lisp を見比べながらどっちかに物申す 記事を書き、今週はその続きと行きたかったのですが、元気と時間がなかったので別の話にしました。 2019-12-28 追記: nest マク…

C++再学習メモ -- Common Lisp の視点から (C++11編)

この文章は Lisp Advent Calendar 2019 に便乗して書かれました。 この文章は何か この文章の筆者は、C++11くらいまではなんとなく動向を追っていたが、いつの間にやら C++20 まで行っているということに気付いて cpprefjp を眺めながら勉強しようと思いたっ…

今日のバグ (multiple value 関連)

またまた、 Common Lisp を書いていて、つまらない refactoring を経て間抜けなバグを引き起こしてしまいました。 自戒を込めて 記事にしてみます。 ストーリー 元々のコード 仕様変更が入った 平行してリファクタリングしていた ところがマージすると 何が…

one-package-per-system と one-package-per-file との比較、そして融合

概要 Common Lisp では、どのように package を構成するかについて、大きく分けて二つの方法がある。 伝統的な、1つの system に1つの package を用意する方法。(以下、 one-package-per-system と呼称。) 比較的最近に提案された、1つのファイルごとに1つの…

CL-Yacc と C言語文法の微妙な関係

この文章は、 lisp Advent Calendar 2018 - Qiita の24日目の記事として書かれましたが、 ほとんどC言語の話です 。 CL-Yacc とは ネタマクロ with-c-syntax での用途 C言語の文法の微妙な点 : typedef typedef のパーズの例 回避策の一つ : The Lexer Hack …

最近書いた define-setf-expander の例

この文章は、 Lisp SETF Advent Calendar 2018 - Qiita の 12/10分の記事として書かれました。 最近作った cl-json-pointer という適当なライブラリで、簡単な define-setf-expander を書いたのでご紹介です。 github.com 簡単に cl-json-pointer 紹介 setf …

ネタマクロ with-c-syntax の最近の更新

この文章は、 lisp Advent Calendar 2018 - Qiita の 12/9 分の記事として書かれました。 昔書いた with-c-syntax というネタマクロを、最近また少し更新したので簡単にご紹介です。 このライブラリ自体は quicklisp に入っていますが、ここで紹介する機能の…

define-modify-macro の謎

この文章は、 Lisp SETF Advent Calendar 2018 - Qiita の 12/7 分の記事としてかかれました。 簡単に define-modify-macro 概説 define-modify-macro というマクロがあります。 これを使うと、「ある場所の値を読み出し、関数を適用し、結果を書き戻す」と…

AWS Lambda の Custom Runtime として Common Lisp (sbcl) を使う

この文章は、 lisp Advent Calendar 2018 - Qiita の 12/6 分の記事として書かれました。 表題の通りです。色々書いたり、気の利いたことをやろうと思ったのですが、今日 (12/6) は疲れた&時間がないのでこんな感じで・・ 参考にしました Custom Runtime を…

リモート swank サーバに繋ぐ俺の設定

この文章は、 lisp Advent Calendar 2018 - Qiita の 12/1 分の記事として書かれました。 最近はやはり、 AWS 上のインスタンスに接続して作業したり、さらにそのインスタンスに Lisp 処理系をインストールし、そこに繋いで開発することが多いです。 そうい…

Common Lisp で unwind-protect 等のインデントを減らすことを考える。

背景 こちらの記事を読んだ。 windymelt.hatenablog.com Perl には Scope::Guard という、スコープを抜けるときに一定の処理が行われることを保証する仕組みがあるらしい。 Common Lisp でそれに相当するものは unwind-protect なのだけど、どうしてもネスト…

Common Lisp で最近やらかしたコーディングミス

この記事は、 Lisp Advent Calendar 2017 - Qiita 12日目の記事として書かれました。 最近お仕事でCommon Lispコードを書いていますが、仕様を勝手に勘違いして恥ずかしいコーディングミスをしてしまうことがどうしてもあります。 ここでは、私がやらかした…

CFFIの"CFFI-Wrapper"という隠し機能について

この記事は、Lisp Advent Calendar 2016 の22日目の記事として書かれました。 CFFIには、 CFFI-Wrapper という undocumented な機能があります。 Undocumented な機能ということで使用がはばかられますが、僕がかつて cl-libnuma という libnuma のFFI バイ…

Mathematicaのオブジェクト指向的機能をCommon Lispで真似てみた。

背景 先日、7月30日の Lisp Meet Up presented by Shibuya.lisp #42 - connpass において、「Mathematicaとオブジェクト指向について」という発表がありました。 そこでは、 Mathematica の機能を利用した、オブジェクト指向的な機能が提示されており、私は…

Unicode 圧縮を実装した

概要 Standard Compression Scheme for Unicode (UTS #6: Compression Scheme for Unicode) を Common Lisp で実装しました。 github.com ここに至った経緯は以下のようになってます。 仕事で使えそうかなと思って調べた。でも使わなかった。 検索する限りだ…

細かすぎて使いどころがなさそうな Common Lisp の最適化ネタ

この文章は、 Lisp Advent Calendar 2015 - Qiita の記事として書かれました。 以下のコードは、平方根を取る関数 SQRT を呼び出すだけの関数を定義しています。 (defun hoge (n) (declare (optimize (speed 3) (safety 0) (debug 0)) (type double-float n)…

今日のバグ

前書き 今日も今日とて、バグった Common Lisp コードを走らせてしまい、 SBCL を落としてしまいました。 自省のために一筆書きます。 対象のバージョンは以下です。 SBCL 1.2.4-2ubuntu1 (Ubuntu Linux 15.04 上。 2015-09-30 時点での apt 上の最新) SBCL …

Common Lisp の iterate の拡張計画メモ

概要 Python の itertools を Common Lisp の iterate に持っていこうとしてみたら、最初の方の chain で足止め。どうしよう。 なぜ? 1) Python の itertools は、色々なコレクション型に適用できるイテレータがあることが前提。 Common Lisp には、汎用の…

Common Lisp 漢数字プリンタ 実装終了

Common Lisp で漢数字プリンタをちまちまと作っていたのですが ( Common Lisp 漢数字プリンタの試みのメモ - y2q_actionman’s ゴミクズチラ裏 )、ついに終わらせてしまうことにしました。 y2q-actionman/jp-numeralgithub.com くだらない機能を盛り込んだの…

Common Lisp 漢数字プリンタの試みのメモ

Common Lisp の format で漢数字を出すという遊びをしているのだけれど、ちゃんとやろうとすると意外と面倒で困ったので、いくつかメモ github.com 文字エンコーディング 1020 を示す "𥝱" という文字が、 Unicode で U+25771 という位置にある。 Unicode の…

Common Lisp 用の libnuma の binding を書きました

Linux で NUMA 環境をユーザプログラムから扱うための C ライブラリである libnuma の Common Lisp 向け binding として、 cl-libnuma というものを書きました。 レポジトリはこちらです : https://github.com/y2q-actionman/cl-libnuma これを書いた動機や…