トップ «前の日(06-20) 最新 次の日(06-22)» 追記

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

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|

2005-06-21 寒い(エアコン苦手)

% [雑談] 単車に乗る人間を見分ける方法を思いついた

「なんだって?それは本当か、ジョジョ」
「単車乗りは、四輪車を運転するときもカーブで内側に身体を傾ける」
「え、ウソだろ?」
「ああ、ウソだぜ。だがマヌケは一人見つかったらしいな」

・・・スベった。って言うか、セリフがうろ覚えすぎてどうにもこうにも(笑

あ、でも『単車乗りはカーブで内側に…』ってわりと確率高くないですか? 少なくともわしはそうですね。単車に乗らなくなってから6年くらいは経つのに、いまだにそうだし。 んで、乗らない人は、まったく身体を傾けないか、もしくは外側に傾けます。

あと、横とか後ろを確認するときに、直接見ないと気が済まない人は、単車乗りである可能性が高い気がする。

そういや、単車に乗らない人を、リアシートに乗せるのは怖かったなあ。 ちゃんと事前に「カーブのときは、わしに合わせて身体を傾けるのですよ」と注意したにも関わらず、思いっきり外側に踏ん張っちゃって(まあ、怖いんだろうけど)、あまりの曲がらなさにガードレールに突っ込みかけた(苦笑

% [FreeBSD] 6.0 Release Process

わ、密かにコードフリーズしてるし。 って言うか『RELENG_6 branch』なんつーのがあるのは、何の冗談ですか?

何よ、6.0 って current からリリースするんじゃないの? って言うか、現在でも相当数生き残ってると思われる 4.x 利用者はどうするつもりなんだ。 トンボの方に行けってことですか? まさか stable ブランチを3本もメンテする体力無いよねえ……

案外、RELENG_5 を速攻でお取り潰しにして RELENG_6 に移行とか。 んで、RELENG_4 は相変わらず延命とか。

いや、多分コアチームの連中は RELENG_4 を切り捨てたくてしょうがないってところなのかな。 まあ DragonFly という逃げ道がある現在では、良い感じに切り捨て時なのかも知れないが。

% [雑談] なんちゃらバトンお断り

どうせ友達の少ないわしのところなんかには、回ってくるまいと思ってはいるんだが、回す相手がいなくなった人が苦し紛れにわしを指定してこないとも限らないので(自意識過剰でつか)、あらかじめ予防線を張っておく。

なぜお断りなのかと言うのは、たださんが書いてる話が、まんま当てはまる(当てはまりすぎてブンブンうなずいちゃったよ)んで、そちらを読んでいただきたい。

と言うわけで、もしわしにバトンを渡そうと思っても、華麗にスルーさせていただきますのでご了承ください。

まあ、わしがよく見てる (ブログ|日記) は、あらかた済んでるみたいなんで、こっちに飛び火してくることは無いとは思うけど(苦笑

% [game] みんごる4日記、目指せホールインワン編

つーわけで、ホールインワンを狙うためにキャラ変更。 ホールインワンに必要なのは、まず第一にコントロールの良さ。 そしてピンをデッドに狙うための強いスピン。

この条件を満たすのはコントロール、スピン共に A のローズしかいないでしょう。 安定度なんて度外視だから、インパクトがショボかろうが、バンカーとラフが苦手だろうが、知ったこっちゃありません。 でもまあ、さすがにインパクトが E じゃ、まともに打てないんで、ビギナークラブ&ボールを使うわけですが(苦笑

さて、それでは風が弱くて簡単なコースをいろいろ回ってみましょうかねえ。


2006-06-21

% [雑談] あれ? セッション内容から OCaml が消えてるよ?

なぜー!!

『オブジェクトと多相バリアントで泥縄プログラミング』とか、そーゆーネタで誰かしゃべってきてくださいよ (別にわしがそういうネタを持ってるわけではありません)。 もしくは『ファンクターでオブジェクト指向プログラミング』とか (重ねて言いますが、そういうネタを持ってるわけではありません)。

% [Mac][Haskell] Hugs がビルドでけん

Fink の Hugs があまりにも古いので (Version: February 2001 って書いてある) 最新のをビルドしようと思ったんだけど、謎のエラーが出てうまく行かない。

% cd hugs98-plus-May2006
% CC=gcc-3.3 ./configure
% make
...(中略)
gcc-3.3 -c -DNDEBUG=1 -g -no-cpp-precomp  subst.c
gcc-3.3 -c -DNDEBUG=1 -g -no-cpp-precomp  type.c
gcc-3.3 -flat_namespace   hugs.o edit.o observe.o builtin.o char.o compiler.o errors.o
 evaluator.o ffi.o goal.o input.o machdep.o machine.o module.o opts.o output.o plugin.o
 script.o static.o storage.o strutil.o subst.o type.o version.o  -lreadline -lncurses
 -lm -ldl  -o hugs 
ld: Undefined symbols:
_mallocBytesRWX
make[1]: *** [hugs] Error 1
make: *** [all] Error 2

こんな感じ。 gcc-4.0 でも同じ状況。

なんでこんなエラーが出るのかがよくわからん。 mallocBytesRWX って関数は builtin.c に定義されてる static 関数で、もちろん builtin.c 内部でしか使われていない。 なんなんだろなーこれ。

DarwinPorts ではこのバージョンの port があるんで、大丈夫だと思ったんだけど……

% [OCaml][アルゴリズム事典] バブルソート

思いっきり三日坊主 (四日か?) だったんで反省して再開。 こんなばかばかしいお題でも (失礼) OCaml で書くと微妙に楽しい。

% cat bubsort.ml
let bubble_sort cmp lst =
   let rec bsort l cont =
      match l with
      | x1::x2::xs ->
           if cmp x1 x2 > 0
           then begin
              let r, c = bsort (x1 :: xs) true in
              (x2 :: r, c)
           end
           else begin
              let r, c = bsort (x2 :: xs) cont in
              (x1 :: r, c)
           end
      | _ :: [] | [] -> (l, cont)
   in
   let rec loop l =
      let ret, cont = bsort l false in
      if cont then loop ret else ret
   in
   loop lst
% ocaml

# #use "bubsort.ml";;                  
val bubble_sort : ('a -> 'a -> int) -> 'a list -> 'a list = <fun>

# bubble_sort compare [2;6;3;1;7;9;0];;
- : int list = [0; 1; 2; 3; 6; 7; 9]

まあなんつーか、バブルソートで効率を追求してもしょうがないから、末尾再帰にこだわるのはやめた。 どのみちスタックの深さが気になるほどの、でかいリストには使えないっしょ。

% [雑談] ワールドカップ中継!大規模 v.s. 小規模 (バグで行こう)

なんか妙に笑えた。

% [OCaml][アルゴリズム事典] 選択ソート

単純なソート特集。 挿入ソートもやろうと思ったんだけど、リストで簡潔にやる方法を思いつかなかったんで、またいずれ。

% cat select.ml
let selection_sort cmp lst =
   let select l =
      match l with
      | x :: xs ->
           List.fold_left begin fun a b ->
              let a', a'' = a in
              if cmp a' b > 0 then (b, a' :: a'') else (a', b :: a'')
           end (x, []) xs
      | [] -> invalid_arg "select"
   in
   let rec loop l =
      let a, ax = select l in
      match ax with
      | [] -> l
      | _ :: _ -> a :: (loop ax)
   in
   loop lst
# #use "select.ml";;                      
val selection_sort : ('a -> 'a -> int) -> 'a list -> 'a list = <fun>

# selection_sort compare [2;6;3;1;7;9;0];;
- : int list = [0; 1; 2; 3; 6; 7; 9]

fold 使ってるところは fold_left でも fold_right でもどっちでも良いと思うけど、どうしても fold_right を使うのは躊躇してしまう(苦笑)。 動きのイメージとしては fold_right の方が合ってるような気もするんだけど。

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

% 向井 [しゃべれる人がいなかった、ってことでは>LL Ring かく言う私も打診を受けたのですが、そもそも LL Ring ..]

% jijixi [> perl がない な、なんだっt(ry ほんとだ!!]

% TrackBack [http://jijixi.azito.com/cgi-bin/diary/index.rb?date=200609..]


2007-06-21

% [Python][Mac] findertools.sleep() で寝てくれなかった件 (ショボ〜ン

こういうの↓が、

% cat goto_sleep
#!/usr/local/bin/pythonw
import findertools
findertools.sleep()
% ./goto_sleep
/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-mac/lib-scriptpackages/
Finder/Legacy_suite.py:67: DeprecationWarning: raising a string exception is deprecated
  raise aetools.Error, aetools.decodeerror(_arguments)
Traceback (most recent call last):
  File "./goto_sleep", line 3, in <module>
    findertools.sleep()
  File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-mac/findertools.py",
  line 80, in sleep
    finder.sleep()
  File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-mac/lib-scriptpackages/
  Finder/Legacy_suite.py", line 67, in sleep
    raise aetools.Error, aetools.decodeerror(_arguments)
aetools.Error: (-1708, 'the AppleEvent was not handled by any handler', None)

こんな感じでエラー。 ざっと pdb で舐めてみたけど、肝心の部分が C で書かれたところみたいで、原因は特定できず。 さすがにそこから先まで追う気力は無い。

まあ、sleep() はともかく、emptytrash() とか launch('.') みたいなのは動くんで、スリープに関する何かが以前と変わってて、それに追従できてないってことかなあ。

……っていうか、よく考えたら、うちの iMac はしばらく前からスリープからうまく復帰できなくなってたので、スリープ機能は必要無いのであった。 「そういや AppleScript を使う方法だとどうなってんだ?」とか思ってうっかり確かめてしまって (すんなりスリープした)、やっぱり復帰できなくてぐったり...orz

ちなみに AppleScript を使ってコマンドラインからスリープさせるには、

#!/bin/sh
osascript -e 'tell app "Finder" to sleep'

こんな感じで。

% [Scala] 最近の Scala

なんか最近微妙に Scala が盛り上がりつつあるような気配なんで、ついつられてまた調べてみたりしてるんだけど、2.6 で予定されている変更点が結構楽しみ。

OCaml のオブジェクト大好きなわしとしては、Structural subtyping の導入は嬉しい。 できれば型推論は OCaml 並にがんばってほしいところではあるけど。

あと、最近はあんまり詳しく変更点を追ってなかったんで気付いてなかったんだけど、結構色々文法が変わってるね。 内包表記は以前だと、

scala> val l = for (val x <- List.range(0,100); x < 10) yield x
l: List[Int] = List(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

こうだったのが、(今はまだ使えるけどいずれ廃止予定らしい)

scala> val l = for (x <- List.range(0,100) if x < 10) yield x
l: List[Int] = List(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

こうなって、少しわかりやすくなってる風味。 他にもタプルが、

Tuple(1,2)

と書かなきゃならなかったのが、

{1,2}

になって、結局今は、

(1,2)

になっている。 現状だと、タプルを持ってる普通の言語のように、

scala> val (x,y) = (1,2)
x: Int = 1
y: Int = 2

こういうのが書けるようになってて、すっきり。 あと、関数をカリー化する方法が、

scala> def f(x:Int)(y:Int) = x + y
f: (Int)(Int)Int
scala> &f
unnamed18: (Int) => (Int) => Int = <function>

こうだったのが、(これもまだ使える)

scala> f _
unnamed19: (Int) => (Int) => Int = <function>

こうなってたり。 ただ、

scala> &f(1)
unnamed26: (Int) => Int = <function>

こういう部分適用の代替表記がわからん。

scala> f _(1)
error: That kind of statement combination is not supported by the interpreter.

scala> (f _)(1)
<console>:5: error: type mismatch;
 found   : (Int)(Int)Int
 required: (?) => ?
 possible cause: missing arguments for method or constructor
  val unnamed27 = (f _)(1)
                   ^

一応、一旦変数に束縛すれば大丈夫みたいではあるが。

scala> def g = f _
g: (Int) => (Int) => Int

scala> g(1)
unnamed28: (Int) => Int = <function>

あ、わかったわかった、こうだ。

scala> f(1) _
unnamed32: (Int) => Int = <function>

省略する部分を _ にするわけか。 これはこれで、わかりやすいかな。

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

% みずしま [お。Structural Subtyping導入されるんですね。それは確かに 楽しみ。]


2008-06-21

% [雑談] ドルアーガの塔、最終回

最終回なのに「続く」状態かよw まあ、一応ちゃんと続編やるつもりらしいのが救いか。

しかし、広げた風呂敷をたたむどころか、さらに大きなのを広げて終わるってのはどうなんだ。 ドルアーガ(仮)を倒したこと以外何も終わってない上に、大量に謎を振り撒いて終了。 で、続きは 2009 年にって? その頃には今回の話なんて忘れとるわ(苦笑

さすが GONZO 期待を裏切らないな (注: 褒めてません)。

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

% cooldaemon [とは言いつつ、もう 2008年 折り返し。 無事、続きが放送される事を祈ってよっと・・・。]


トップ «前の日(06-20) 最新 次の日(06-22)» 追記

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

RSS はこちら

jijixi at azito.com