水島雄太のブログ

個人的かつ雑多なブログです。

2013-01-01から1年間の記事一覧

Clojureのevalとmacroのパフォーマンスを比べる

Clojureには他の動的型言語と同様に文字列*1をプログラムとして評価出来るevalという関数があります。 Clojureにはマクロがありますし他の動的型言語と同様にevalは遅いだろうという推測は容易に出来ますので、evalを使わないといけない局面というのはそう多…

Racketのdot記法を使う

Racketのdot記法は、基本的にリストの最後の要素の前に付きますが、 (1 . < . 2)と書くと、(< 1 2)と等価に評価される*1同様にみなされるようです。 dot記法がペアを生成する(cons x y)の省略記法であることを考えると、 この記法は例外的に感じられます。 …

Lispは読みにくい以上に書きにくいと感じている人が多い説

Lispが流行らない理由として「括弧が多い」ということはよく挙げられる要素だと思います。 それでは何故「括弧が多い」ことが敬遠されるかというと、以下の2つが考えられます。 読みにくい 書きにくい そのビジュアル面から、「括弧が多い」ことで「読みに…

RacketのREPLをマシにする

Racket のREPLは素の状態では履歴もemacs標準キーバインドも使えないため、使い勝手が非常に悪いです。 とりあえず XREPL(eXtended REPL) を設定しましょう。 設定方法 $ echo "(require xrepl)" >> ~/.racketrc POSIX互換なら $ racket でREPLが起動する際…

minosound 1.1 をリリース

minosound 1.1 をリリースしました。 バックエンドの部分はClojureで開発していて結構出来ているのですが、 はもうちょっと作りこみたいなーと思ったので、 とりあえずクライアントの部分だけデザイン、UIを変更したり、 WebVIEWでの更新情報告知機能などを…

CloudBeesでのClojureプロジェクトのデプロイ方法

Clojureでよく使われているPaasとしてはHerokuが有名だと思いますが、最近はCloudbeesもよく使われているようなので、私もCloudbeesにプロジェクトをデプロイしてみました。 Cloudbeesはクラウド環境を操作するためのleiningenプラグインが用意されており、…

IDEとVimと生産性

単純に生産性だけを考えると、静的型言語なら確実にIDEの方が生産性が高いように思うし、動的型言語でも最近だとIDEの方に軍配があがることが多いかもしれない。 ただ、実はプログラマにとって生産性はあんまり重要ではなくて、 それよりもどれだけモチベー…

迷路自動生成

先日リリースしたアプリで迷路自動生成を実装してみたので、 まとめてみます。 迷路自動生成の仕様としては、 2次元平面の対角をスタートとゴールとする スタートは必ず一つ ゴールは必ずしも、一本の道で終わってなくても良い 以上の3点となります。 これ…

Homebrewでインストールしたleiningen1.xからleiningen2.xへのUpgrade

2013/04/04現在、Homebrewでインストールされる leiningenが1.x系列なので2.x系列にUpgradeしてみました。 ほぼleiningen/wiki/Upgradingの手順通りです。 直接Cellarいじくっていいのかよくわかりませんので、こうした方が良いよというのがあれば指摘してい…