読者です 読者をやめる 読者になる 読者になる

debianでncurses6をインストール

2015年に新しいバージョンのncurses 6.0が出てた Announcing ncurses 6.0 - GNU Project - Free Software Foundation (FSF) バージョン5では背景色と前景色の色の組み合わせが256通りしか使えなかったのが32768通り使えるようになったらしい(それでも256色の…

clozure clがおかしい

lemをcclで動かしてみたらどうにもsbclとは違うらしくうまく動かなかった sbclとcclで違う結果になる小さなコードがこれ ;; example.lisp (ql:quickload :lem-base :silent t) (in-package :lem-base) (let ((b (get-buffer-create "temp"))) (insert-string…

orelangを***で実装してみたをcommon lispで

プログラミング言語を作る。1時間で。 - Qiita common lispでというよりはリードマクロを使ってcommon lispをorelang化していく ;;; orelang.lisp (defpackage :orelang (:import-from :cl :+ :* :=)) (defvar *ore-readtable* (let ((*readtable* (copy-re…

emacsのslimeとddskkとの衝突を回避する設定が機能しなくなってた

slimeにはスペースを挿入して関数のパラメータをミニバッファに表示するslime-spaceという機能がスペースキーに割り当てられてるけど これがddskkのskk-insertと被っていてddskkが使えなくなる問題がある その回避方法は調べたらいくつか出てくるけど、それ…

sbclのバグ

* (lisp-implementation-type) "SBCL" * (lisp-implementation-version) "1.3.2" * (software-type) "Linux" * (software-version) "3.16.0-4-amd64" * (defun fib (&optional n) (if (< n 2) n (+ (multiple-value-call #'fib (- n 2)) (multiple-value-cal…

Common Lispで重複するコードを一つにまとめる

こういう重複したコードを一つにまとめたい (defun hoge (line fn) (do ((line line (line-next line))) ((null line)) (funcall fn line))) (defun piyo (line fn) (do ((line line (line-prev line))) ((null line)) (funcall fn line))) 二つのS式を渡し…

Common Lispのreplとstumpwmを同じプロセスで動かす

処理系はsbcl ;; run-stumpwm.lisp (ql:quickload :stumpwm) (defun run-stumpwm () (sb-thread:make-thread #'(lambda () (sb-thread:with-new-session () (stumpwm:stumpwm))))) (run-stumpwm) xterm -e sbcl --load run-stumpwm.lisp で起動する これでxt…

common lispでコンパイル時の余計な警告を抑制する

; test.lisp (defun f (x) (g x)) (defun g (x) x) * (load "test.lisp") ; file: /home/username/test.lisp ; in: DEFUN F ; (G X) ; ; caught STYLE-WARNING: ; undefined function: G ; ; compilation unit finished ; Undefined function: ; G ; caught …

common lispのstring-*関数はシンボルも受け付ける

(string-downcase 'hoge) ; => "hoge" (string-upcase 'hoge) ; => "HOGE" (string-trim "*" '*var*) ; => "VAR" (string= 'foo "FOO") ; => T 文字列のリストから目的の文字列を探してstring-upcaseをする (string-upcase (find "hoge" '("hoge" "piyo" "fu…

jnethackをインストールするシェルスクリプトを書いた

実行するとファイルをダウンロードして設定した場所に展開したあと日本語化パッチを当ててjapanese/Install.lnx通りにファイルを編集してからmakeしてインストールする 実行した後に/tmpにダウンロードしたtarballが残る ダウンロードするURLは変数NETHACK_S…

roswellからcommon lisp処理系を入れていたときのstumpwmのインストールが失敗する場合の対処

環境はubuntu 15.04 amd64とsbcl 1.2.14 configureで処理系の場所を指定する $ ./configure --with-sbcl="${HOME}/.roswell/impls/x86-64/linux/sbcl-bin/1.2.14/bin/sbcl" 生成されたMakefileを修正 LISP=ros sbcl_BUILDOPTS=-l ./make-image.lisp sbcl_INF…

stumpwmでfloating windowを使う

今のstumpwmのバージョンは0.9.8 いつからかstumpwmでfloating windowが使えるようになってた floating windowはfloating groupの中で使える gnew-floatコマンドでfloating groupを作る フレームをマウスの左ボタンで移動、右ボタンで大きさの変更が出来る …

コマンドラインからquicklispを使うスクリプト

#!/usr/local/bin/sbcl --script (load "~/quicklisp/setup.lisp") (defun usage () (format t "usage: ql command package command: search install ")) (let ((argv sb-ext:*posix-argv*)) (if (/= 3 (length argv)) (usage) (destructuring-bind (cmd pkg…

common lispの上で動くemacsライクなスクリーンエディタを書いた

https://github.com/cxxxr/lem MicroEMACSにcommon lispを書くのに必要なインデントやS式単位の編集、シンボルの補完、 式の評価、簡易的なデバッガがあるlisp-modeをつけたようなものになった quicklispで呼び出せるようにquicklisp/local-projects/に置い…

common lispのmerge

common lispでmergeを使って整列済みのリストに要素を挿入する (defun insert (x list &optional (pred #'<)) (merge 'list (list x) list pred)) (insert 2 (list 1 3 5 6)) ; => (1 2 3 5 6) mergeの使いどころがpaipのコードを見るまでわからなかった