kikkiiのブログ

ひきこもり

今年の願い事

 そういえば、5日ぐらい前、いつもより鬱だった。ほとんどどんな活動もできなかった。横になればなるほど頭がぼやけてくるベッドでゆるゆると腐乱死体を目指しながら、星空にどんな願い事をしようかと考えていた。七夕だったから、そんなことが許されると思った。

 もう30分で次の日。結局出てきたのは、「簡単なことではない」というフレーズだった。その通りじゃないか。それが今年の願い事でいい、と思った。寝返りをうつとギシギシと鳴るベッドで神経が張り詰めていくのがわかった。その次の次の日、湿度が高く暑くてじっとしている方が苦しかったので、汗だくで木製のベッドを解体した。

 床に布団を敷いて寝ることにした。今日から高枕状態ではなくなって、私を戒める距離、でもなあ、寝床から見る天井が高くなって、この距離が今の私を変える決定的なコツを知っている、などと考えていたらとても悲しくなった。その日から今日までまだ悲しいし、開いてはいけない箱を開いてしまいそうなキッカケがやってくるみたいで不安仕方がないし、惨めな気持ちでありんす。

light table

Light Tableclojureで書かれたテキストエディタ。適当な感じで英語は読み飛ばしたけど、ここを見てコピーアンドペーストたらubuntuにインストールできた。端末に次のように打ち込んでインストールする。

sudo add-apt-repository ppa:dr-akulavich/lighttable
sudo apt-get update
sudo apt-get install lighttable-installer

ltable で起動する。

次はアンインストールの仕方。忘れそうなのでこれをメモしておきたかった。

sudo apt-get remove lighttable-installer
sudo add-apt-repository --remove ppa:dr-akulavich/lighttable

音楽を聴こう。

youtu.be

短く健やかに短く啓示的に...

 おそらく、たぶん、おもう、〜だろう、〜かもしれない、などの言葉を挿入してしまってスパっとものを言い切ることができないとき、あなたの知識は足りていない。だとしたらググレカス、もしくはあやふやな部分をなくすために調査や実験をして、決定可能な箇所は決定すべきだ。言い切れないことからくる無駄な不安が文章から削除し、筋肉質な肉体をつくるなら、文章は短く健やかになる。

 しかし、根拠を持って何かを決めようとすると、細部の記述や理由を述べる必要性が現れ、言葉はむしろ増えていく。だらだら細かすぎるのは、惰性で生きている人生みたいで、美しくない。人間は必ず死ぬのだと知っているなら、時間がない、暴れろ、些事は捨てろ、もがけ。細かすぎることを破棄しよう。大事な部分だけを抽象したり比喩をつくるれたなら、文章は短く啓示的になる。

 このどちらの意味でも、文章を短くすることは、詩の価値感の中にあるものだ。詩人は若くして死に、詩とは短くて美しいものだ、と私たちは知っている。音楽と詩が重なったヴェン図がどんな霊感なのか、日々音楽を聴いて私たちが知っているのと同じことだ。素晴らしい音楽や言葉に喜んで洗脳されている、と言い換えてもいい。ニューロン脳内焼きじゅじゅじゅいいいい…


 これを書いているとき聴いていた曲。一昨日からこの曲を繰り返し聴いている。離れられない。

youtu.be

クイックソート2

 前にブログに貼り付けたクイックソートのコードをほんの少しだけ読みやすくしたい。内包表記の部分を書き換える。まずは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
-- 後
quicksort :: (Ord a) => [a] -> [a]    
quicksort [] = []    
quicksort (x:xs) =     
    let smallerSorted = quicksort (filter (<= x) xs)  
        biggerSorted = quicksort (filter (> x) xs)   
    in  smallerSorted ++ [x] ++ biggerSorted

 filterを使った。次は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))))))
;; 後
(defun quicksort (lst)
  (if (null lst) ()
    (destructuring-bind (x . xs) lst
      (let ((smaller (remove-if-not (lambda (i) (< i x)) xs))
            (bigger (remove-if-not (lambda (i) (>= i x)) xs)))
        (concatenate 'list 
                     (quicksort smaller)
                     (list x)
                     (quicksort bigger))))))

 loopをやめてfilter系の関数remove-if-notを使用した。common lispでの方が書き換えの効果は大きい気がする。


 filter系の関数とmap系の関数を組み合わせて使えば内包表記を書き換えられるし、その逆もできるのだろう。haskellのghciを使ってみる。

-- 内包で生成
> [2*x | x <- [1..10]]
[2,4,6,8,10,12,14,16,18,20]
-- mapで生成
> map (2*) [1..10]
[2,4,6,8,10,12,14,16,18,20]
-- 上の2つは同じ
> [2*x | x <- [1..10]] == map (2*) [1..10]
True

-- xはodd(奇数)である、という条件をつける
> [2*x | x <- [1..10], odd x]
[2,6,10,14,18]
-- リスト[1..10]にfilterをかけてからmapを適用する
> map (2*) (filter odd [1..10])
[2,6,10,14,18]
-- 上の2つは同じ
> [2*x | x <- [1..10], odd x] == map (2*) (filter odd [1..10])
True

引数として放り込むリストにfilter系関数で条件をつけて、それにmap系関数を適用することによって内包を表現する。