2018年6月11日月曜日

plistなんて知らんがな

 それにしてもcl-dbiで返ってきたデータにはめんくらった。
 こんな感じのlistになっていたからだ。

(:|date| 3281472000 :|place| "A7" :|count| 3 :|day| 7 :|raceno| 1 :|umano| 1 :|name| "アドマイヤマドンナ" :|sex| "牝" :|age| 2 :|time| 1137/10 :|umaorder| 13 :|odds| 502/5 :|ninki| 13 :|stable| "南井 克巳" :|weight| 54 :|forecast| :NULL)

 中身のことは別にどうでもいい1
 「:|date|」の部分はテーブルのカラム名なのだろう、ということはわかるけれど、「:」と「|」には何か、意味があるのか? そもそもこんな形式で? mapcarで舐めてdateの次のものを値とあつかうなんて面倒じゃないか?
 たとえば、pg.elだと((data . 3281472000)(place . "A7")….)みたいな感じで返却されてきていた。alistというらしいが、これならassoc2で簡単に値を求めることができる。それがなんでまたこんな形式に?
 alistに変換する関数を書くか、と考えながらあちらこちら調べていたらgetf? 何、それ? おいしいの?
 返却されてきたlistは実はplistというものらしい。
 (getf list :|date|)
 で、値を求めることができた。
 getfは素のelispにはなく、cl.elに定義されていた。

 でも「:」と「|」の謎は解けていないのだった。

すこしわかった

Footnotes:

1

競馬のデータだ。

2

(nth 1 (assoc 'date list))みたいな感じで。