kikkiiのブログ

ひきこもり

common lispのハッシュテーブルは使いにくい

ハッシュテーブルという言葉を最初に見たとき、難しそうで私は怯えた。でも、ハッシュテーブルがkeyの対を詰め込む辞書マップのようなものだと分かったとき、使う分には「なんだそんなことか割と簡単だ」と思った。でも、common lispでハッシュテーブルを使おうとすると、面倒なのでやる気がなくなってくる。

;; hhhという名前のハッシュテーブルをつくる
(defparameter hhh (make-hash-table))

;; hhhに:key1というキーと値111を入れる
(setf (gethash :key1 hhh) 111)

;; hhhに入っている:key1の値を取り出す
(gethash :key1 hhh)
111
T

;; まとめて入れる
(setf (gethash :key2 hhh) 222
      (gethash 'key3 hhh) 333
      (gethash "key4" hhh) 444)

;; 取り出す
(gethash :key2 hhh)
222
T

(gethash 'key3 hhh)
333
T

;; あれ...
(gethash "key4" hhh)
NIL
NIL

最後の(gethash "key4" hhh)で値が取り出せないのは、キーに文字列を使ったからだ。 文字列をキーとして使いたい場合は、ハッシュテーブルをつくるとき次のようにしなければなかった。

(defparameter hhh (make-hash-table :test #'equalp))

;; ハッシュテーブルにキーと値を入れる
(setf (gethash "key4" hhh) 444)

;; 値を取り出す
(gethash "key4" hhh)
444
T

嫌になってくる。でも、serapeumというパッケージの中で、このごたごたを解決するいいもの(dictとdict*)を見つけた。

(ql:quickload :serapeum)

;; hhhという名前のハッシュテーブルをつくり、まとめてキーと値を入れる
(defparameter hhh (serapeum:dict :key1 111
                                 :key2 222
                                 'key3 333
                                 "key4" 444))

(gethash :key1 hhh)
111
T

(gethash :key2 hhh)
222
T

(gethash 'key3 hhh)
333
T

(gethash "key4" hhh)
444
T

;; hhhに追加でキーと値を入れる
(serapeum:dict* hhh "key5" 555)

(gethash "key5" hhh)
555
T

dictを使えば、キーと値を交互に並べて属性リストっぽく書けばハッシュテーブルがつくれるのでよい。

2018年10月16日

多分何かを守ってきたから今がある。「私が守ってきたものは何だろう?」とふと思った。

まず私には、地球とか、あるいは国や文化を守っできたという感覚はない。私はそんな大きなものは大きなものは守れていない。私が守ってきたものがあるとしたら、もっと身近なものだ。心の習慣のような私と一体化したもの。

嫌いな人がいるとする。その人を見ると、大きな嫌悪感。でも、そういう人も自由に自分がしたい事をしてもいい。私はそれを破壊してはならない。私は嫌いな人を攻撃したくても攻撃しないようにする。私はそういう事は守ろうとしてきた。

そしてそもそも、嫌な人には近づきたくない。関わるべきではない、逃げろ。シャットダウンする、見ないようにすべきだ。しかし、逃げられない場合もある。たとえ生活がネットだけだったしても、生活していると、別の人の生活と触れたり見えたりする事になって、そこから嫌悪感は侵入してくる。

だから私は壁をつくってきた。生活も周りで固執する嫌悪感と共にありながら、その嫌悪感に負けないようにするための壁。私が守ってきたと言えるものはこういう壁だと思う。これからも私は壁をつくり自分自身を囲むだろう。

プロレスとMMA

「それを信じていて否定されたときに顔を真っ赤にして怒っていたらすごく笑える」バカバカしい事を信じる事にした方がいい。

2018年09月17日 - kikkiiのブログ

映像を見ながら書き込みできるところで、たまにプロレスを何となく見て楽しいと感じる。バカバカしいかもしれないがプロレスをボロクソに言っている格闘技ファンの書き込みを見ると何故か腹が立つ。プロレスには台本があって八百長だとか、プロレスラーは弱いだとかの書き込みだ。私はプロレスより総合格闘技(MMA)の真剣勝負が好きである。なのにプロレスをバカにする人がいたら腹が立つ...「どうしてなんだろう?」と考えていて、囚人のジレンマで考えたらよいのだ私は気づいた。

MMA囚人のジレンマで言うと、お互いがそれぞれ合理的に行動するケースだ。お互いを信頼していないのでその前提で合理的に行動して、全体の利益は協力した場合より少ない。しかし格闘技やその他の真剣勝負のスポーツでは、お互いが相手は裏切るだろうと思ってフェイントをかけながら、裏をかいて一撃見舞ってやろうと戦い、その真剣勝負に拍手が送られる。スポーツは合理的な裏切りに拍手を送り利益を付加させる、人間社会が創り出した特殊な状況と言っていいのだろう。

プロレスは複数回繰り返される囚人のジレンマである。プロレスMMAと比べて年間の試合数が多い。興行の数が多いのは単純に数をこなしてお金を稼ぐのためなのだと思う。しかし、いつも真剣勝負をしていては身体がもたない。プロレスには、真剣勝負ではないお遊びに見えるような場面もある。このような状況が複数回繰り返される囚人のジレンマに当てはまる状況を生んでいる。

複数回の囚人のジレンマでは信頼が生じてくる余地がある。プロレスを見ていると色々な協力の形や政治が生じてきて私は楽しいのだと思う。私は敵であり商売仲間を怪我をさせないための優しさや、客を喜ばせ興行を成功させようと過激な技を敢えて受けるプロレスの胡散臭さに騙されてもいい。複数回の囚人のジレンマからは人間性が出てくる。これはMMAや他の真剣勝負だけの戦いとは別の大事な価値だと私は思っているのだろう。だからそれが否定されたら私は腹が立つのだと思う。