なんだこれは

はてなダイアリーから移転しました。

Lisp

またつまらぬものを最適化してしまった

ちょっと、リストを述語でわける関数を考えてみた。述語が真になるもののリストと、偽になるもののリストを多値で返してみよう。 そう考えたとき、シンプルな実装はこうなるだろう。 (defun divid-if (fn lst) (values (remove-if-not fn lst) (remove-if fn…

エジプト式分数を計算する

エジプト式分数を計算してみよう。 分数を分子が1の単位分数の和であらわすのだ。どうしても再帰で考えてしまう。しかたないんよ。 (defun egyptian-fraction (n m) (labels ((iter (n m k aux) (if (= n 0) (reverse aux) (if (< (/ n m) (/ 1 k)) (iter n …

exercism の lisp の問題がよくわからない

exercism の lisp の課題の うちの robot-name なんだけれども、問題がよくわからない。

マイナーな? rem を推してみる。

Common Lispの剰余計算は二種類ある。 mod と remだ。common lispで剰余というと、多くは mod があげられる。マイナーな remがかわいそうです。

exercism.io の lisp の問題ってすくなくない?

exercism.io の common lispの問題にチャレンジしているんだけど、 common lisp の問題って少ないと思うの。8個クリアしたから、残り9個かー。githubで管理されているらしいので、なんかすれば増やせるのだと思うの。 Language Name Number Clojure clojure …

exercism.io の common lisp にチャレンジしてみた

clozure cl /Emacs/Mac OS X環境で exercism.io のcommon lispにチャレンジした。 quicklisp はインストール済み。

lisp の プロジェクト生成の quickproject と cl-project のメモ

quicklisp でインストールできる、プロジェクト生成支援に quickproject と cl-project があったので試してみた。quickprojct は、簡易プロジェクト用、 cl-project はテストもある豪華版みたい。 実際に利用する手順はほぼ同じみたい。

複数ファイルから成る、小さいプロジェクトのメモ

quicklisp で 小さいプロジェクトのメモを書いたので実際のプロジェクトを書いてみたメモ前回 ~/.config/common-lisp/source-registry.conf.d/ フォルダにファイルを置いて、 asd ファイルのサーチパスに ~/lisp 以下のフォルダを再帰的に追加した。 ここに…

asdf2の設定ファイルのメモ

quicklispで 小さいプロジェクトを作成してみようとすると、ASDF2で asdファイルを検索するサーチパスを設定する必要があるらしい。そうなの?~/quicklisp/local-project/でもいいんじゃないのと思うが、ここにしか置けないのは不自由だし、Zach BeaneがMaki…

全ての全角英数文字を生まれる前に消し去りたい、あ、やっぱり貴方の頭の中からだけでいいや。

アルファベットや数字は半角でお願いしますっていったじゃないですかー。やっぱり全角も欲しいってやめてくださいよ。 文字種は 26*2+10 しかないから、もう連想リストでいいかなって、やっつけた。 (defun eisuu-convert (string &optional (han->zen t) ) …

部分部分で小計をとりながら合計したい → できた

家計などの計算であるような、部分部分で小計をとりながら合計したい これは一気に答がでるのだが、まあこんなかんじ。 (+ (+ 1 2 3) (+ 4 5 6) (+ 7 8 9) ) ;"all" "a" "b" "c" 一気に計算するのではなく、部分部分で小計が欲しいのだ。 6 ; aの和 15 ; bの…

Clozure CL 1.10 / slime が cp932 の「ん」での謎の挙動をする

まず、Clozure CL / Slime で UTF-8 でひらがなの "ん" のある文字列をつかった lisp ソースを作成します。 (defvar *char* "さん") ;特に意味はない C-cC-c(slime-compile-defun)してみましょう。問題はありません。 次にC-cC-k(slime-compile-and-load-fil…

load,require,ql:quickload の違いのメモ

load,require,ql:quickload がよくわからなかったので調べたメモ。たぶん lisper には常識なんだろう。load関数は、引数のファイルを読む。あくまでファイル単位。ファイルの場所をかいておけば、どこにあっても読むはず。lispのロードパスの外であってもよ…

デザインパターンのテンプレートメソッドって with系マクロ + サンク?

モダンC言語プログラミングをパラパラと読んでいたが、デザインパターンというものがでてきた。名前だけは聞いたことがあったんだがどういうものだろう?まずは、テンプレートメソッド。前後に定型処理が必要なコードにつかうのが テンプレートメソッド。リ…

lisp 起動してから slime から操作して元にもどすメモ

swank server を利用すると、はじめからslime を使用していなくても、途中から利用できるようになる。これを利用すると起動中の ものを書き換えるホットデプロイができるらしい。これの操作メモ

CCL/slime/Windows7 に quicklisp で cl-fad で SystemFunction036がない

Windows 7上で Clozure CL/slime に quicklisp で cl-fad を (ql:quickload "cl-fad")して使うことは全く問題ないが、 一度(ql:quickload "cl-fad")したあとで、(ql:quickload "cl-fad")する場合、例えばClozure CLを終わらせてもういちど起動したあとなんか…

guess というライブラリをみつけた

https://github.com/zqwell/guess にあるライブラリだ。書いてあるとおりにやってみよう。ただし、ClozureCLで。

気がついたら、Clozure CLが更新されていた

気がついたら、Clozure CL が更新されていた。何がかわったのかがよくわからなかった。

eml ファイルを csv に変換するlisp作りなおしたので公開する。

むしゃくしゃして、 eml ファイルからcsvにまとめるlisp を作った。勢いにまかせてこの辺に置いた。反省していない。 今はむしゃむしゃしているところである。

複数のemlテキストをcsvにするってない?

eml形式の(要は1メール1ファイルの)メールテキストがいっぱいあってこれを、CSVのレコードにして、一覧にしたいという。よくわからないが、適当なツールをさがしてみたが、いいのがない。 捜すのが下手なのかもしれない。しかたがないので、適当に書いてみた…

series macro のマニュアルはっけーん

series macro のマニュアルは、http://lambda-the-ultimate.org/node/1451 ここにある User Manual for the Series Macro Package のリンク先みたい。このPDF、全部画像じゃないですかー やだー。

ClozureCL で UTF-8 + BOM を作成したい

ClozureCL1.9 で UTF-8 + BOM のテキストを作成したいのだがどうすればいいのかわからない。もうあきらめて、nkfかiconvを呼ぶか。

quicklisp で uninstall するメモ

(ql:qucikload :cl-fad) したあとで、何をしたのか壊してしまい、cl-fad の関数を呼びだすと、SystemFunction036 (clozure clのなにかか?)がみつからないといわれるようになってしまった。ということで、アンインストールのめも (ql:uninstall "cl-fad") こ…

MS Excel のCSVを Common Lisp の Clozure CLで開くためのメモ2

前にも、 Common Lisp の Clozure CL で MS ExcelのCSVファイルをひらく方法を書いた。 ;;;; load by quicklisp (ql:quickload :fare-csv) ;;;; external format for csv file of MS EXCEL/WINDOWS (setf ccl:*default-external-format* (ccl:make-external-…

defun の関数名にあたるところに setfが入っている、SETF関数の宣言のメモ

いろいろと、あちらこちらで、Common lisp のソースコードを見ていると、こんなものに出会った。 (defun (setf car) (new-car lst) (rplaca lst new-car) new-car) (defun cookies-out* (&optional (reply *reply*)) "Returns an alist of the outgoing cook…

MS Excel のCSVを Common Lisp の Clozure CLで開くためのメモ

話によると、MS EXCELでCSVを作成すると、セルに改行を含めたりするらしい。 セルに改行がはいっていても fare-csvを使えば簡単に処理してくれると聞いたので試してみたらエラーがでてしまった。fare-csv:read-csv-fileを使う前に、文字コードをSJISにあわせ…

Clozure CLで僕が誤解していたこと

Emacs で test2.lisp にこんな関数を書いてみる (defun hello-world () (format t "hello lisp world")) それから slime 起動して、C-cC-k してから slime 側で (ccl:save-application "test.o" :toplevel-function #'hello-world :prepend-kernel t) こうし…

cl-user:step のない clozure cl のために cl-stepper を入れる

clozure cl では step (cl-user:step) が実装されていないそうだ。 (defun fact (x) (if (< x 1) 1 (* x (fact (1- x))))) (step (fact 5)) ;;-> 120 ;cclではステップ実行できずに直ぐに値がかえってくる。

clozure cl 1.9 on Macで遊んでいたら、Stack over flow した話

大きい数を計算できる、common lispで遊んでみることにした。※この計算内容に意味はありません。

Lispでツールをつくろうとしていたら

Common Lispでツールをつくろうとしていたら、得体が知れないといわれた。 やっぱり括弧がおおいから見た目がおかしいのかもしれない。