kikkiiのブログ

ひきこもり

孤独な奴

私の孤独を耽溺しているやつがいる。奴は私より大きいけど、私の部屋よりも小さい。奴は私の部屋の扉よりも大きいから、部屋の外に出ていけないように感じるが、半透明の長方形なので壁をすり抜け逃げていけそうだな、とも感じる。

宗教書

旧約聖書」「新約聖書」「コーラン」「古事記」は、折を見て読まなければいけない古典だな、と思いつつも私はまだ読んでいない。これらの書を読んでいないと「話にならない」と言う人は世の中にたくさんのいるとおもう。「話にならないこと」が大きな問題なような気がするから共通理解の方法として、読みたくなくても、理解しなければならない本はある。読んでおけばそれを背理法の前提として受け入れて矛盾を指摘することで、逆手を取ることもできる。感銘を受けてしまったらどうしよう? それは芸術だ。私はその言葉を素晴らしい詩だと思うだろう。それは私が読書に求めていることの一つだ。無料で日本語訳が読めるようなのでここにリンクを貼っておく。

クイックソート

HaskellCommon Lispの勉強をコッソリ少しずつ進めている。Haskellクイックソートが簡単に書けるのを知って嬉しい。このサイトのコードを貼り付ける。

-- haskell
quicksort :: (Ord a) => [a] -> [a]  
quicksort [] = []  
quicksort (x:xs) =   
    let smallerSorted = quicksort [a | a <- xs, a <= x]  
        biggerSorted = quicksort [a | a <- xs, a > x]  
    in  smallerSorted ++ [x] ++ biggerSorted

common lispでも同じようなやり方でクイックソートを書いてみた。

;; common lisp
(defun quicksort (lst)
  (if (null lst) ()
    (destructuring-bind (x . xs) lst
      (let ((smaller (loop for i in xs when (< i x) collect i))
            (bigger (loop for i in xs when (>= i x) collect i)))
        (concatenate 'list 
                     (quicksort smaller)
                     (list x)
                     (quicksort bigger))))))

上で使われているdestructuring-bind構造化代入というらしいが、このやり方を見つけられてよかった。common lispでも関数の入力を分解して定義本体の語彙として使える。

;; common lisp
(defun fff (lst)
  (destructuring-bind (x . xs) lst
    (cons x (cons x xs))))
-- haskell
fff (x:xs) = x:x:xs

上の2つは同じ。でもhaskellの方が簡潔だ。


 ※クイックソート2

kikkii.hatenablog.com

神経伝達物質

頭の中を詩にしたい。

アセチルコリン

ノルアドレナリン

ドーパミン

セロトニン

グルタミン酸

GABA

私やあなたの頭の中にある物質をいくつか並べてみた。でもこれは多分詩ではないし、私が言いたいことでもない。でもwikipediaを流し読みすると少し勉強になる。忘れてしまいそうなことはメモしておこう。

私は煙。私は雲。もしくは私は脳。友達は隣の私。原始的なところでお隠れになっています。私の友達の友達も私で、その活動は音楽に似ています。私は辞書をつくっています。相互参照してそれ自身が巨大で複雑だ、ということが私が言っていることが正しい理由です。根拠リレーの途中でいつも雲隠れです。その中に私のことも書いてあります。私は、たとえば、グルグル辞書をつくったり、音楽をパクパクしています。「かくれんぼや」と言われることもあります。意味が漏れていく穴から声を出すために、グルグルパクパクフラクタル自分を食べるけれど、全然、見つかったり、死んだりしません。