common lisp

clsqlでのレコードロックとか楽観ロックとかどうやるんだろ?

調べてみたが分からない。 リーダーマクロ使ったときのfor updateの書き方がわかんない。 def-view-classしてupdateした時の楽観ロックの方法も分からない。 困った。

weblocksの勉強

/clbuild/source/weblocks/examples/にサンプルが入っている。 simple-blogっていうのが入っているので、これを見ながらもう少しweblocksをいじってみたい。 blogというか掲示板というか、まぁ勉強用なので中途半端なアプリを作ってみる。実際のところ、どう…

clsqlの勉強 その2

clsqlでjoinをやってみよう、と思って、こんなコードを書いて、、、 def-view-classで複合主キーってどうやって指定するの?というところで詰まる。 (require :clsql) ;;1:1 (clsql:def-view-class test1 () ((test1-id :accessor test1-id :initarg :test1-…

clsqlの勉強 その1

clsqlをいじってみる。 (require :clsql) ;;クエリ (clsql-sys:with-database (con '("localhost" "xxx" "xxx" nil) :if-exists :old :database-type :postgresql-socket) (pprint (clsql-sys:query "select * from tb0" :database con))) ;;prepared statem…

weblocksでclsqlをデータストアに使う

mac+sbcl+weblocksの環境ができたので、weblocksを試す。 weblocksはclbuildで入れた。 slimeを起動して、以下のソースをC-c C- (eval-when (:compile-toplevel :load-toplevel :execute) (require :weblocks) (require :clsql)) (defpackage #:person (:use…

weblocks その1

せっかく入れたんだからちょっと触ってみようと思ったweblocks。 ちょっとのつもりが結構時間つかったな。。。 なんかドキュメントあんまなくない??まずはやっぱりhallo worldからかなあ。ということで。 (asdf:operate 'asdf:load-op :weblocks-demo) (we…

clsqlが入らないからcl-rdbmsを入れようとしたが。

asdf-installで入らない。 どーやっていれればいいんだヨ。

CLSQLでプリペアドステートメント

clsqlのプリペアドステートメントがうまくいかない。 (clsql-sys:with-database (con '("localhost" "test_user" "test_user" "p") :if-exists :old :database-type :postgresql-socket) (let ((stmt (clsql-sys:prepare-sql "update tb0 set data1=? where …

lispとrubyとpythonと その9 DBアクセス(common lisp)

CommonLispでDBアクセスというとclsql。 いつもどおりasdfで入れて。。。と思ったが、依存関係があるのかうまく入らない。 DB関連だからしょうがないのかなぁと、Synapticパッケージマネージャで入れた。 DBはMySQLで。。。としてたんだけど、プリペアドステ…

lispとrubyとpythonと その7 継続とFiber(rubyと少しだけlisp)

頭が継続脳になっていないためかもしれないけど、継続欲しいなー、、、と普段思うことはない。 でもまぁ継続があるのもrubyの特徴なのかなぁ、と思ったので書いてみる。 簡単な例。 require 'continuation' i = 0 c1 = nil callcc do|c| c1 = c end i = i + …

lispとrubyとpythonと その7 パターンマッチ(common lispだけ)

rubyとpythonにはパターンマッチがないみたい。たぶん。 comon lispではcl-matchでいける。 asdfで入れたヤツだとletmatchがなんかヘン。 二文字だけいじったら動いたけどあってんのかな。 ;;パターンマッチ ;;cl-matchを使う ;;asdfで入れとくこと (require…

lispとrubyとpythonと その6 正規表現(common lisp)

Common Lispでの正規表現。 cl-ppcreを使う。cl-interpolを入れとくと正規表現リテラルが使えるので、これも入れといた方がよい。 ;;正規表現はcl-ppcreで。 ;;asdfでインストールしておく ;;(require 'asdf) ;;(require 'asdf-install) ;;(asdf-install:ins…

lispとrubyとpythonと その2(common lisp) ver2

ちまちまと更新。 common lispは日付まわりが面倒くさいなぁ。 universal-timeが基本になってるのがすでに微妙。 整備されたライブラリが欲しい・・・。 ;;文字列連結 ;;concatenateで連結 (format t (concatenate 'string "あいう" "えお")) ;;->あいうえお…

lispとrubyとpythonと(common lisp) ver2

ここんとこずっと忙しくて忘れかけてるし復習をかねて昔書いたエントリを更新。 増えたのはcl-interpolの部分くらい。 あとコメントの形式は http://tips.lisp-users.org/common-lisp/index.cgi?逆引きCommonLisp書式 と一緒にする。 こういうのが↑増えて、L…

lispとrubyとpythonと その4 Cライブラリの呼び出し(まとめ)

それぞれの言語でCと連携してみたまとめ、というか感想というか。 lispもRubyもPythonも呼び出し自体はわりと簡単。 ちゃんと動くかどうかは別として・・・。 一番すんなり理解できたのはSBCLだったような気がする。 Rubyの「拡張ライブラリをCで書く」って…

seriesの戻り値がヘンな件

でseriesの戻り値がヘンと書いていたのですが、タイムリーにg000001さんのところにseriesの結果が変 - 'T - cadr groupってエントリが。asdf-installで入れると (subseries (series 'b 'c) 0 5) #Z(LIST B C LIST B) こうなっちゃうみたい。 まぁいいか。

lispとrubyとpythonと その3 リスト(lisp series-collectors)

Lisp、series-collectors編 Collectorsはseriesをはずして中身を取り出す ;; COLLECT-FIRST ITEMS &optional (DEFAULT NIL) [Function] ;; これは単純。 ;; 最初の要素取り出し (collect-first (scan-range)) ;;出力 ;;0 (collect-first #z()) ;;出力 ;;NIL …

lispとrubyとpythonと その3 リスト(lisp series-mapping)

Lisp、series-mapping編 mappingはseriesの加工。 ;; MAP-FN ;; いわゆるmap ;; MAP-FN TYPE FUNCTION &rest SERIES-INPUTS (map-fn 'integer #'(lambda (i) (1+ i)) (subseries (scan 'integer '(1 2 3 4 5)) 0 4)) ;; 出力 ;; #Z(2 3 4 5) ;;複数指定は例…

lispとrubyとpythonと その3 リスト(lisp series-scanners)

Lisp、series-scanners編 リファレンスを見ながらseriesのメソッド一通りみてみた。 Alterationはよくわかんなかったので飛ばしたけど。 えらく長いのでエントリを分けます。 まずはscannersから。 ;;seriseを使えるようにする (require 'series) (series::i…

lispとrubyとpythonと その3 リスト(lisp)

lisp編。 標準だと弱いのでseriesを追加しよう・・・としてまだかけてない。 ;;リスト ;;リストを変数に設定 (setf a '(a b c d e)) ;;リストの最初と「最初を除いた残り」の取得 (format t "~A~%" (car a)) (format t "~A~%" (cdr a)) ;;リストの先頭にデー…

lispとrubyとpythonと その2(common lisp)

common lispでの ・文字列 連結 分割 切り出し 比較 ・同値性、同一性 ・変換 数字→文字列 文字列→数字 文字列→時刻 時刻→文字列 ・標準出力に文字列出力 ・標準入力から読み込み ・コマンドライン引数の受け取り が以下。 やっぱりというか標準ライブラリが…

lispとrubyとpythonと その2

ずいぶんあいたけど続き。 このペースだといつまでかかるか、そもそも続くのか分からないけど、目標は下の一覧に書いたことをlisp、ruby、Pythonで一通りやてってみることが目標。 ほんとはschemeとhaskellとOCamlでもやりたい。あ、一応、javaかC#もあれば…

lispとrubyとpythonと(common lisp)

まずはlisp。 基本的にはこんな感じ。 ;;コメントは;で始める ;;標準出力に表示 (print "こんにちは 1") ;;;改行は~% (format t "こんにちは 4~%") ;;;タブ文字はこんな感じで表示できる (format t "こんにちは~Cこんにちは~%" #\tab) ;;;フォーマット (form…

common lisp でシリアライズ

もともと何をしようとしてたんだっけ? そうそう、pythonでもいじってみようかと思ったんだった。 で、comon lispの練習用に書いたプログラムをpythonで書こうかなぁと考えたんだ。 で、これは必要だけどcommon lispでまだやってないってことってあったっけ…

疲れたらリスト操作で遊ぶ L99

なれない会社でぐったりです。 今は耐える。仕事で見なきゃいけないソリューションがvssで管理されているらしい。 そういえばそんなのあったな。 そりゃ使うか。。。そうか。。。vssか。。。会社でMSプロダクトばかり使っているとLispがやりたくなる。 でも…

Yコンビネータ復習

前にCommonLispで書いてみたんだけど、もう全然覚えてない。 書き方もひどいな。こりゃ。 というわけでもう一度やり直してみた。 今度はもう少し詳しく書く(つもり) 使ったのはallegro common lisp。 Yコンビネータができるまで (if (zerop n) 0 (+ n (fun…

Two-Phase Termination

さてTwo-Phase Termination - qnzm.log(クニジマログ)。javaのinterruptを再現したかったけど、諦めた。 sb-thread:interrupt-threadで割り込みはかけられるんだけど、スレッドのステータスをとる方法が分からない。 ffiを使って取得してみようか、と一瞬考…

windowsのcommonlisp処理系て何がいいんだろう

linuxでSBCLを使っててそれはそれでいいんだけど。 windowsでもSBCLだったんだけど、Asdf-Installが動いてくれないのがイヤになってきた。 windowsではスレッドも動かないし・・・。http://read-eval-print.blogspot.com/2007/08/common-lisp-windows-sbcl-a…

Futureパターン

Future - qnzm.log(クニジマログ)をやってみた。 一応書いたけど中途半端だし、いまいち。元のサンプルがOOPなんだけど、そのままじゃつまらないからLispっぽい方法はないものかと思ったんだけど思いつかず。。。 それならプロキシを生成する部分をマクロで…

seriesのリードマクロ

(series::install) すればmap-fnを#M seriesを #Z でかけるんだー。しらなかった。 こんな感じ。 CL-USER> (require :series) ("SB-CLTL2" "SERIES") CL-USER> (series:collect (series:map-fn 'integer #'+ (series:scan '(1 2 3)))) (1 2 3) CL-USER> (ser…