トップ «前の日(11-09) 最新 次の日(11-11)» 追記

じじぃの日記、ツッコミ可

Twitter: @jijixi_org
Xbox Live: jijixi

初心者が書いた OCaml 入門
Spotlight tips サイト内リンク集
1970|01|02|
2003|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|11|
2011|05|
2012|01|

2003-11-10 ゼルダ祭(やけくそ)

% やってしまいました。

何をって? 徹夜です徹夜。ゼルダで徹夜。これで 64 ゼルダ初代、ムジュラの仮面に引き続き 3 作連続で徹夜してまでやってしまうという負けっぷり。ゼルダ恐るべし。

初代の時は金曜の夜から日曜まで寝ないでっていう記録も・・・まああの頃は若かった(苦笑)。ただ、最後の方は馬に乗ってただただ走ってるだけになってた気がするが・・・要するに思考力ゼロ。

んでまあ、なんつーかその・・・今日もすでにその状態?

えーと、とりあえずですな、今回ブーメランが 5 箇所ロックオンできるのが楽しいです。あー・・・何言ってんだ?


2004-11-10 もうスタンドはいいよ、と言いたい(謎

% [本日のリンク元] google 検索 (ぷよぷよ widestudio)

・・・きわめて謎。WideStudio で作ったぶよぶよがやりたいってことですか?いかんいかん、ちょっと『よし作るか』って思ってしまった。そんな暇は無いはずだ。たぶん。

うーん、ギャラクシアンもどきなら作ってみようかと思ったこともあったりするんだがなあ。でも敵のアルゴリズム作るのがめんどくさそうなんで止めたけど(軟弱)。xgalaga みたいなショボっちい (失礼かな) 動きなら、それほど難しそうでもないけど、本物のギャラクシアンみたいな味のある動きは、なかなか難しいと思ったりするぞ。

% [雑談] 長年日記っておもしろい

うん、おもしろい。去年の今ごろって、遊んでばっかりいたんだなぁ(苦笑

たしかに、去年の夏ころから今年の春ころまで、あんまり仕事無かったんだよ。今年はそれなりに忙しそうだけど、年末のスパロボはプレイできるかなあ……いや、無理にでもするけどね、きっと(笑

% [雑談] 天敵の必要性

そろそろ人類にとっての天敵が必要なんじゃないかと思う。寄生獣でも、ヘドロから生まれた怪獣でも、トカゲ面の宇宙人でも、とにかく人類全体を脅かすほどの脅威が現れないものか。

人間ってやつは、どうして『敵』がいないと生きていけないのか。人間は敵と戦うことによって繁栄してきた。他の獣達と戦い、自然と戦い、勝ち続け、戦う相手がいなくなったら今度は仲間同士で戦うようになった。食物連鎖の掟はもはや人間を脅かさない。

今考えてみると、実は冷戦時代の方が平和だったんじゃないかと思える。一人生き残ったウサの国は結局『敵』を求めて拳を振り上げる。もうそんな必要は無いはずなのに。

もうウサ君を止める体力のある国はどこにも無い。徒党を組んで対抗しようにも、そもそもその組むべき相手と仲が悪い。

そうしてウサ君は好きなように『敵』を捏造し続ける。9.11 にしたってさすがに自作自演とまでは言わないが、あれは『防げなかった』んではなくて『防がなかった』んだろうさ。その方が『敵』を作るのに都合が良いからね。

人間は『敵と戦う』という本能を仮想的に満たす方法をいくつも発明してきた。スポーツ、格闘技、その他もろもろ。極端な話をすれば、資本主義というものもそうだと言えるかもしれない。でも結局満たされずに、もっと直接的な行為で満足しようとしている。

人間は『敵と戦う』ことでアイデンティティを保っている。敵とは何も実際に存在するものである必要はない。例えば何らかの目標に向かって努力する…それは怠けたいという自分の心と戦うことだと言える。そして、『戦う』ことの、その一番短絡的な方法が暴力…戦争なんだろう。

……そんなことを考える、今日この頃。人間てのはそういうもんだから、本当の意味での平和が訪れることは無いんでしょう。どこぞの神様がご用意くださる楽園とやらは、争いの無い世界なんだそうだが、そこに住む者たちっていうのは、もうそれは『人間』ではないんだろうな。そりゃそうか、終末戦争で『人間』は滅びて、『神の子ら』が生き残るんだそうだから。ん?滅びるのは悪しき者だけだって?うん、だからそれが『人間』でしょ?*1

*1 別に特定の宗教を貶めようとしているわけではありませんので、あしからず


2005-11-10

% [雑談] わしが OCaml に惹かれて Haskell にイマイチ惹かれない理由

FreeBSD には惹かれるけど、NetBSD にはイマイチ惹かれない……てのと似てる気がする。 なんつーか、FreeBSD は(Linux なんかに比べれば)厳格ではあるんだけど適度に力の抜きどころがあるというか。 NetBSD はマジメすぎて逆に安心できないというか。

同じように、関数型プログラミングの魅力は大きいんだけど、OCaml では適度に力を抜ける(副作用バリバリでも大丈夫)のに対して、Haskell では『副作用許すまじ』みたいな雰囲気で力が抜けなさそうな気がするわけで。 なんだよモナドって、みたいな。

原点が手続き型言語な人間が Haskell を始めるには、かなり気合が必要かと思われる。 だいたい遅延評価ってやつも直感的じゃない。 それこそ必要に応じて使う…ってんであれば何とかならなくもないが、いつでもそうなんだ…と言われたらもういろいろと困る。ぶっちゃけ脳みそがついていかない。 こんなネタとか読んじゃったら、ますます不安が募るし。 あと関数の定義なんかも気持ち悪い。 どっからどこまでが定義なんだかわかんないよ。

それから OCaml のトップレベルインタプリタみたいなのが無いのも取っ付きづらい。 Hugs ってのがそういうものなのかと思ったら、インタラクティブに実行できるのは式だけで、定義や宣言はいちいちファイルに書かなきゃならんのな。 OCaml はちょろっと実験したいときとか楽で良い。

と言うわけで、わしは FreeBSD で良いし、OCaml で良いのである。 ちなみに Linux はあんまり好きじゃないし、Lisp もあんまり好きじゃないんである。

  • 今日のまとめ(わしの独断と偏見によるイメージ)
    • FreeBSD = OCaml
    • NetBSD = Haskell
    • Linux = Lisp

% [OCaml] ラクダのジレンマ問題、わしならこうする

昨日のネタ絡みで、そういう状況になった場合に自分ならこうするだろうというのを少し具体的に書いてみよう。 人それぞれスタイルってのがあると思うけど、もしかしたら今後この問題に直面する人の参考程度にはなるかもしれない。

・ファイルは分けずにモジュールは分ける

% cat baseMod.ml
module Hoge =
   struct
      let v = "hoge"
   end
module Fuga =
   struct
      let v = "fuga"
   end

% cat main.ml
open BaseMod
let _ =
   print_endline Hoge.v;
   print_endline Fuga.v
% cat main.ml
(* 別バージョン *)
module Hoge = BaseMod.Hoge
module Fuga = BaseMod.Fuga
let _ =
   print_endline Hoge.v;
   print_endline Fuga.v

baseMod.ml のトップレベルには module 以外定義しないようにしておけば、open しても名前空間を汚される心配は少ない。 もちろん Hoge やら Fuga やらが既存のモジュール名と被らないように気をつける必要はあるが。 余計な open は入るものの Ruby で require してモジュールにアクセス…てのと似たようなもんだから、特に冗長というわけでもないだろう。

別バージョンの方は、ネストしたモジュールをそのままローカルなモジュールにしちゃってる例。 ちょっと冗長かもしれないが、これなら名前空間を汚す心配が無い。

・モジュールは分けずにファイルは分ける

これについては昨日書いたのがそのまま例になるかと。 もう少し突っ込むなら、ファイル名をちょっと工夫するかな。

% cat hoge.ml
include Hoge_stub_1
include Hoge_stub_2

% cat hoge_stub_1.ml
let p () = print_endline "hoge"

% cat hoge_stub_2.ml
let pp () = print_endline "fuga"

% cat main.ml
let _ = Hoge.p ()

みたいに、最終的にいらなくなるファイルの名前には適当にサフィックスでも付けといて、アーカイブを作った後に自動で消しやすくしてやる。

% [OCaml] ラクダのジレンマ番外編

モジュールは分けずにファイルは分ける場合に使える裏技(笑

% cat sub.ml
let print () = print_endline "hello world"

% cat main.ml
#include "sub.ml"
let _ = print ()

% ocamlc -pp "cpp -P" main.ml
% ./a.out
hello world

-pp オプションを使うとプリプロセッサでフィルタリングできるんで、そこで cpp (C Preprocessor)を使ってやる。 ちなみに cpp に -P オプションを付けないとゴミが付いちゃうんで注意(このためのオプションを思い出せなくて5分間 man とにらめっこしたのは内緒)。 幸い OCaml のソースで行頭に "#" が出てくる事は無いはずなんで、たぶん問題無く使える……と思う。

まあ、こんなやり方もあるよってことで。

% [OCaml] F# のモジュール

はい、と言うわけで案の定気になっちゃって仕方ないんで調べてみたよ。

マニュアルを見た感じだと、ファイルの頭で module 名を宣言するみたいなことが書いてあるんで、ファイル名とモジュール名は関係無いのかもしれない。 OCaml との比較ページを見てみると Functor や OCaml スタイルのオブジェクトなんかは未サポートらしい。 基本的には .NET Framework の名前空間をそのまま持ってきてる感じなのかね。

そのせいかクラス定義やもろもろの扱いが OCaml と随分違う。 逆に .NET な言語に慣れてれば、親しみやすい感じではあるのかも。

うーん、結構おもしろいかもね。 アンチ MS っぽいわしだが、.NET Framework にはわりと肯定的な印象があったりするんで、ちょっと期待してみたくなったぞ。 よし、とりあえずダウンロードしとこう。 でも、うちには VisualStudio 2002 しかなくて VS 用機能拡張はサポート外だから、ちまちまコマンドラインでいじらなくちゃならないが(いや、別にそれでも良いんだけど)。 あ、今度の VisualStudio はただで使えるようになるんだっけ?

Mono で使えるなら Mac でも試せるから楽なんだけどな。どうなんだろ?

本日のツッコミ(全2件) [ツッコミを入れる]

% soutaro [F#のVisual Studio拡張は、コード書く端から型推論してくれて、なかなか面白いですよ。あと、Visual ..]

% jijixi [> Visual Studio Expressは、アドインが使えないので、 がくっ...orz これのためにわざわざ..]


2006-11-10

% [Mac] Rosetta 知られてねー!!

某所とか某所とかとか。 AltiVec (SIMD 命令) に依存しているものじゃなければ、だいたい動くらしいっすよー。

……つか、なんだ、Rosetta の存在なんかを知らんでも普通に過ごせるって時点で「うまくやったなー」ってことなんだろうけど、Mac に特別興味の無い人には、これほどまでに知られてないんだなーてのは微妙にショック(苦笑

ちなみにユニバーサルバイナリのアプリケーションは、Finder の『情報を見る』からムリヤリ PPC バイナリとして動かすこともできるはず。 わしは Intel Mac 持ってないから試せないけど。

% [雑談][Mac] すでに Superbowl XLI へのカウントダウンは始まっている

そんな Dashboard Widget が公開されていた。 まったくアメリカ人てのは仕方ないやつらだな(笑

・・・うっかりインストールしそうになったわしに、人のことは言えません(の

% [雑談] ぬおっ、いつの間にか HAPPY TREE FRIENDS(グロ注意) が Podcast で配信されるようになってますよ!?

全然知らなかった。 えーと…… URL はこれなんだけど、これを……これをどうすんだ? たぶん iTunes にドラッグ。

つか、とりあえず Mac だとクリックするだけで良いような気もするんだけど、よくわからん。 よくわからん場合は iTunes Music Store で検索するのがてっとり早い気もする。


2008-11-10


トップ «前の日(11-09) 最新 次の日(11-11)» 追記

日記ってのは本来、自分で読み返すためにあるもんだよなあ……
もしくは有名人になったら死後に本になったりとかか?

RSS はこちら

jijixi at azito.com