標高+1m

Don't be rational.

2014-01-01から1ヶ月間の記事一覧

地理と天文学とドイツ語とプロマネの授業を取った

おととい春セメスタが始まって、今週は授業を取ったりやめたりで忙しい。 今回は 地理: Geography 2 -- Cultural Geography 天文学: Astronomy 5 -- Stars, Galaxies & the Universe ドイツ語: German 1 -- Elementary German - Level I プロマネ: CIS 136 -…

昨日考えてたこと

fpsは逆か

カタ

今日Object-Oriented Programming Versus Abstract Data Typesってけっこう昔の論文読んで、最近もやもやしてたことが解決した。 クラスを型みたいに使う言語が多いから、そんなもんなんだろうと思ってたけど、クラスは型じゃなくて型のコンストラクタなんだ…

CLOSオブジェクトのシリアライズ

これ便利。 (define-class <serializable> () ()) (define-method write-object [(x <serializable>) out] (let* ([class (class-of x)] [serializable-slots (filter (^s (get-keyword :init-keyword (cdr s) #f)) (class-slots class))] [slot-names (map car serializable-slots)] [in</serializable></serializable>…

クラスの使い時

TL;DR だいたいみんな知ってることだと思います。On Lispの「いつオブジェクトを使うのか」に言いたいことだいたい書いてあります。 背景 前にサーバーサイドMVCって記事で、クラスはせっかくモジュラーな関数をそうじゃなくするから基本的に悪だってちろっ…

こんな言語が欲しい

Carrotに静的型付けを実装していくうちに、あれを表現するには代数データ型が必要だ、あれにはシノニム、あれには型クラスなりインターフェースなりが必要、そうするとimplementsだかinstanceだかみたいなのも必要になるし、って結局どんどんHaskellに近づい…

sweet.jsでshift/reset: 限定継続を使ってコールバック地獄から抜け出す

Stop Writing JavaScript Compilers! Make Macros Insteadを読んで、sweet.jsを使ってみた。 解決したい事 JavaScriptでは非同期処理が多いので、継続渡しスタイルのコードばっかりになるのだけど、みんなこれをcallback hellとかpyramid of doomとか呼んで…

Carrotに別名を導入した

昨日の記事で、 例えば、真偽値はa -> a -> aな関数にして、型はBoolにしたいけど、 そうしちゃうと=cを使っても分岐の左右が同じ型かのチェックができなくなっちゃう ということを書いたんだけど、とりあえずこのBoolについての問題はシノニムを導入する事…

Carrotの変な型システムについて

年末年始は結局だらだらと本を読んで過ごしてて全然Carrotを触ってなかった。昨日今日と頑張ったらとりあえず動く型チェッカができて、わりかし欲しいものに近付いた気がする。 今はCarrotを、クロージャといくつかの基本型しかない、型なしλ計算計算機みた…

作詞しました

歌っていいですよ

初夢

宇宙が舞台 楽屋でなにかの発表の出番を待っている 隣に中学で同級生だった子に似た子がいたから声をかけてみるも別人だった サンダーバードっぽい舞台セット ブラックユーモア 犯罪すれすれの商売(宇宙株の再利用) 巨大でひしゃげた望遠鏡を火星に取りにく…