COMMON LISP JP > Archives > 2025/03/15

2024/12/01 05:40:37 UTC新着Lisp記事
#
音を再生しながら録音する (Lisp Advent Calendar 2024) - 丸井綜研 https://marui.hatenablog.com/entry/2024/12/01/130105
2024/12/01 05:51:16 UTC新着Lisp記事
#
Clojure Language Update 2024 #Clojure - Qiita https://qiita.com/athos/items/49609613d28cb2fb61b2
2024/12/01 09:00:29 UTCshiro
#
test
2024/12/02 01:33:59 UTC新着Lisp記事
#
試行錯誤な日々: clojureのreplで実行したいコマンドはshellのパイプで渡せる https://asukiaaa.blogspot.com/2024/12/pass-command-to-repl-by-pipe.html
2024/12/05 05:31:54 UTC新着Lisp記事
#
Clojure Family が色々ある話 - ハッカーと漫画家 https://www.kbaba1001.com/posts/202412030751_clojure-family/
2024/12/06 03:13:52 UTC新着Lisp記事
#
Lispと一緒(32) ラズパイPico2でもuLisp、SPIメモリ読み書き | デバイスビジネス開拓団 https://jhalfmoon.com/dbc/2024/12/06/lisp%E3%81%A8%E4%B8%80%E7%B7%9232-%E3%83%A9%E3%82%BA%E3%83%91%E3%82%A4pico2%E3%81%A7%E3%82%82ulisp%E3%80%81spi%E3%83%A1%E3%83%A2%E3%83%AA%E8%AA%AD%E3%81%BF%E6%9B%B8%E3%81%8D/
2024/12/06 08:27:22 UTC新着Lisp記事
#
JVMのメモリー使用量が想定より3割り増しだった件 https://studist.tech/jvm-uses-memory-ignoring-maxram-466ca6badeb5
2024/12/08 15:00:09 UTC新着Lisp記事
#
extend-protocolでClass/forName怒られるワケ https://blog.valerauko.net/2024/12/07/why-no-class-forname-in-extend-protocol/
2024/12/23 14:46:44 UTC新着Lisp記事
#
Schemeをスクリプト言語としてRustで使う #Rust - https://qiita.com/raviqqe/items/0302b3d498ebb6b8bfc2
2024/12/24 09:52:25 UTC新着Lisp記事
#
Allegro Common Lisp の Modern Mode で読めなくなるコードとそれへの対処
https://y2q-actionman.hatenablog.com/entry/2024/12/24/Allegro_Common_Lisp_%E3%81%AE_Modern_Mode_%E3%81%A7%E8%AA%AD%E3%82%81%E3%81%AA%E3%81%8F%E3%81%AA%E3%82%8B%E3%82%B3%E3%83%BC%E3%83%89%E3%81%A8%E3%81%9D%E3%82%8C%E3%81%B8%E3%81%AE%E5%AF%BE%E5%87%A6
2024/12/25 15:47:28 UTC新着Lisp記事
#
「末尾再帰への書き換え」をやめよう! https://www.tojo.tokyo/posts/stop-rewriting-to-tail-recursion.html
2024/12/25 17:32:30 UTC新着Lisp記事
#
ClojureでRDDとTDDのハイブリッドな開発スタイルを実践しよう https://zenn.dev/lagenorhynque/articles/742cf1a0b0a850
2024/12/28 00:04:11 UTC新着Lisp記事
#
Needleman–Wunsch アルゴリズム #Scheme https://qiita.com/schema/items/59e8e99227b1b384d6a4
#
フィボナッチ数列の 10000 番目を求める #Scheme https://qiita.com/schema/items/4cef16de695414091626
2024/12/30 01:18:12 UTC新着Lisp記事
#
GNU Artanis 紹介 #Web https://qiita.com/NalaGinrut/items/092aa745567a8404fc30
2024/12/31 00:14:25 UTC新着Lisp記事
#
Scheme言語は製品開発に十分なポテンシャルがある #Web https://qiita.com/NalaGinrut/items/bbe36aee9de18046a2eb 興味深いけどAIで文章生成したのかな?
2025/01/01 05:38:18 UTC新着Lisp記事
#
はじめてのscheme制作 https://zenn.dev/clazz/books/a752b62f7b5e64
2025/01/07 10:44:03 UTChnagamin95
#
aifの通常の定義は、aifをエクスポートするパッケージ (UTIL) とaifを使用するパッケージ (USER) とが同一でないとうまく使えないのですね。
```
; caught WARNING:
;   undefined variable: USER::IT
```
つい先ほどこの罠に引っかかりました。
現代でアナフォリックマクロを定義するときのベストプラクティスはあるのでしょうか?
2025/01/08 03:07:04 UTC新着Lisp記事
#
キーワードにするシンボル特有の問題ですが、標準のLOOPのキーワード(forなど)はどこのパッケージで使っても大丈夫なような工夫があります。具体的には名前の文字列で比較するようにしています。
#
他には、
・read時に確定するようにする
・キーワードはkeywordシンボルを使う
・(共有場所として)cl-userのシンボルを使う
・専用のパッケージを使う
別のアプローチとしては、
・アナフォリックマクロは使わない(when-letあたりにする)
あたりかと思います。
#
;; read時にinternする
(defmacro aif (pred con &optional alt)
  (let ((it (intern "IT" *package*)))
    `(let ((,it ,pred))
       (if ,it ,con ,alt))))
#
個人的にはアナフォリックマクロは実際のコードでは使われていないので(話題になる程には)、when-letあたりを使うようにしています。
2025/01/08 07:31:17 UTChnagamin95
#
ありがとうございます。確かに、LOOPマクロにも特殊用途のシンボルがありますね。
*package*というものを使うとリード時にシンボルを構成することもできるのですね。入門中の身なので生兵法で使うのがちょっと怖いですが、分かって使う分にはかなり便利そうです。
アナフォリックマクロを使わないというアプローチはとても明快ですね。こちらを採用してみます。
2025/01/31 06:09:49 UTC新着Lisp記事
#
Viivi 00.36.00 (alpha) 版を公開しました (2025/01/31) https://www.viivi.io/japanese/logs/release.00.36.00.html
2025/02/07 19:13:37 UTC新着Lisp記事
#
Shibuya.lisp lispmeetup #115 https://lisp.connpass.com/event/345289/
2025/03/06 16:53:51 UTC新着Lisp記事
#
C/C++ プログラムに Scheme によるスクリプト拡張を組み込む https://zenn.dev/ftl/articles/448cfea6aaaabd
2025/03/08 09:17:09 UTC新着Lisp記事
#
and-let* はどうも怖くてしょうがない #Scheme https://qiita.com/matomatomato/items/8c24d876e0a4ad3f884b
2025/03/08 09:39:47 UTCshiro
#
and-let* のそれ、自分はいつもこんなふうに書いてます。

(and-let* ([n (expr)]
           [ (even? n) ])   ; 束縛変数が無い場合
  ..)
#
値に#fが使えないのはまあ、generalized booleanをモナドもどきに使う宿命なんで、and-let*に限らない気が。
2025/03/08 13:14:39 UTC新着Lisp記事
#
(and-let* ((even? n)) ...) の方の問題は未使用のローカル変数を警告する支援があれば気付けそう、と思って確認してみると、(and (let ((even? 42)) (and even?)))と展開されるから気付けないのか……。
2025/03/09 18:29:30 UTC新着Lisp記事
#
試行錯誤な日々: clojureで関数内変数との競合を回避してnamespaceの変数を呼び出す方法 https://asukiaaa.blogspot.com/2025/03/avoid-conflict-of-value-on-ns-and-fn-in-clojure.html