トップ «前月 最新 翌月» 追記

はじめてのにき

ここの位置付け

2004|11|
2005|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|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|

ToDo:


2006-06-01

_ D wish

  • version (UnitTest)
  • no-new

(05:30)

_ なんでも文字列化 in D

http://d.hatena.ne.jp/rinset/20060320/1142839025

これすげー便利だなーと思ったけどインターフェースが欲しいので追加。

template tostr(T) {
    char[] tostr(T t) {
        return ToString!(T)(t);
    }
}
template p(T) {
    void p(T t) {
        writefln(tostr(t));
    }
}

今なら bogoyaml もっと面白おかしく実装できるなあ。

(05:38)

_ static opCall

なんてあったかー。

んなもんいるんかいな。

http://www.google.co.jp/search?q=%22static+opcall%22+site%3Awww.digitalmars.com&ie=euc-jp&oe=euc-jp&lr=lang_ja

もう受け入れられずみでござるな。

(08:00)

_ SVN @dsource.org

http://svn.dsource.org/projects/bcd/

などから取得。

(14:00)

_ gl_kanji のリンク修正

(17:59)

_ やりたいこと

記憶喪失な僕でも10個くらいすぐに出るだろう。

  • SDL_command とそっから joystick gesture, sevilwm server
  • へにゃ人が歩く ACT
  • libtccparser, Ruby/TCC, c2d
  • DTR
  • he-mode
  • mod_estraier DAV, JS interface
  • HEFS, sshfs
  • w3m
  • 四国 プレビューを始めたくさん
  • repet どうにかしろ
  • DS あそび
  • OS あそび

下の方はやる気ひかえめというか。

(18:18)

_ w3m localhost:10000

とかで起動できるように。

   if (*p == ':' && p[1] == '/') {		/* scheme found */

って感じで '/' の判定を追加。

(18:36)

_ スクリプト系で良ければ

  • RSS/antenna を適当になんか
  • grep 系を適当になんか

(20:01)

_ スラドフィルタ

というネタを考えたけど実現できそうにない。 予想を確定事項に変換する。

before

警察と仲いいからできるんですかねぇ

after

警察と癒着してますからね。
# 常識だと思ってたけど…
-----------
 微妙に気が効いてそうで微妙なシグネチャ

(22:09)


2006-06-02

_ たまに index.rb 暴走してる事件

どうも /m/ くさいんだよなぁ。

(04:13)


2006-06-04

_ 匿名議論

http://www.madin.jp/diary/?date=20060602#p01

via http://www.hyuki.com/t/200606.html#i20060604001205

なんにせよ情報を消す機構を作ること自体になんか違和感を感じるのであった。

いわゆるお前には関係ないという状態。

(16:09)

_ 匿名の話で思い出したけど

匿名の意見に価値が無い、は間違ってる。 ってのはいつも思ってる通りなんだけど。 けど、非匿名の方が価値がある場合もあるなと思った。

技術的な間違いとかをコメントしてもらう場合は、 ホントどっちでもいい。 むしろ匿名の方が律義な返事しなくていいとかで ラクなくらいだったりとかもありうる。

ただ、意見みたいなものの場合は、 相手がどういうバックグラウンドかわかると 理解やらなんやらが進みやすい、 ってのは一定正しいんだよなと今さら思った。

バックグラウンド無しの発言は無価値だ、 っていうのに反発しすぎて 非匿名の価値みたいなのを過少評価してたかなーとかいう話。

(18:18)

_ ドラゴンヘッド

いっきに全部読んだけど終わってみると面白かったかというと微妙というか。

パワーはあるけど中身がほげほげとか。

(18:48)


2006-06-05

_ コマンド

瞬獄殺みたいなのを許容するのはめんどい気がする。 あれって普通の入力となんか違うよな。

(07:56)

_ 逆ヨガ2回

の初出…

KOF95クラークのウルトラアルゼンチンバックブリーカーかな。 これと逆ヨガ前の超投げは名称に困る。

あとアキラの 46 はなんだっけ。

(09:25)

_ ざっと思い出せた範囲

   Command_AddCommand(cmd, (int)"BAKURETSU_KYUKYOKU_KEN",
                      U, DL, DR, UL, UR, D, -1);
   Command_AddCommand(cmd, (int)"TENHA_HUJINZAN",
                      DR, L, DL, D, DR, R, L, D, DL, -1);
   Command_AddCommand(cmd, (int)"ACCEL_RUSH", L, R, DR, D, DL, UR, -1);
   Command_AddCommand(cmd, (int)"BREAK_SPIRAL", L, DL, D, DR, R, UR, D, -1);
   Command_AddCommand(cmd, (int)"BLOODY_FLASH",
                      DR, L, DL, D, DR, R, L, R, -1);
   Command_AddCommand(cmd, (int)"RAISING_STORM", DR, L, DL, D, DR, R, DL, -1);
   Command_AddCommand(cmd, (int)"HO_O_KYAKU", D, DL, L, DL, R, -1);
   Command_AddCommand(cmd, (int)"HAO_SYOKO_KEN", R, L, DL, D, DR, R, -1);
   Command_AddCommand(cmd, (int)"SHINKU_HADO", D, DR, R, D, DR, R, -1);
   Command_AddCommand(cmd, (int)"YOGA_FRAME", L, DL, D, DR, R, -1);
   Command_AddCommand(cmd, (int)"SYORYU_KEN", R, D, DR, -1);
   Command_AddCommand(cmd, (int)"HADO_KEN", D, DR, R, -1);
   Command_AddCommand(cmd, (int)"TATSUMAKI", D, DL, L, -1);
   Command_AddCommand(cmd, (int)"TETU_ZAN_KO", L, R, N, R, -1);
   Command_AddCommand(cmd, (int)"YAKUHO", R, N, R, N, R, -1);
   Command_AddCommand(cmd, (int)"RIMON", R, N, R, -1);

(09:34)

_ すげーなぁ

http://d.hatena.ne.jp/Ozy/20060604#p1

ちょっと見て短くなりそうに思ったのにならんかった。

i@u ~/test> ./a.out
1999999999 1
2000000000

なんだよなぁ。 test data の妙。

(16:29)

_ しかしまたしても

見たコードそのままサブミットしてしまった。

(16:32)


2006-06-06

_ Haskell と printf

Haskell の何がダメって printf デバッグのしかたが わからないことじゃないかとこないだ考えた。 do の中なら簡単だけど、 関数の中でこの時値どうなってるのー、 っていうのの調べかたがさっぱりわからない。

というか調べられるのか。無理じゃないのか。

僕は printf デバッグが好きで好きでしょうがなくて というか頭弱いからか printf を埋めないと プログラムを理解することができない。

どっかの人におこられそうだけど if の後には基本的に { 書きたくて、 それは後から if の中に入ってるかチェックするために printf を埋めたいという、それだけのためで、 そしてそれに価値があるというか。 if の中と外がとても簡単な条件ならそりゃ { 省略するけど、 基本的にはあった方がいいというか。

途中で全然違う話になっている。

(06:01)

_ キムチ豆腐

うますぎるのでレシピメモ。 忘れるわけない気もするが。 99で買った豆腐、 99で買ったキムチ、 99で買ったごま油、 うまいたれ。

適当にかける。キムチ多め。食する。おわり。

(06:02)

_ 組み合わせ in Haskell

http://d.hatena.ne.jp/mr_konn/20060605/1149520643

これを書いちゃう konn さんすげーと思いつつも

c _ 0 = 1
c n r = (n-r+1) * (c n (r-1)) `div` r

普通に書けよとは思った。

(06:33)

_ あと dfoldl は

これでオッケかな。

dfoldl f z x y = foldl (\a p -> f a (fst p) (snd p)) z (zip x y)

(06:41)

_ Haskellのクラスって

計算量で言うところのクラスみたいな感じなんだな。 というか数学で言うところの、か。

(06:53)

_ 一応高速化

c _ 0 = 1
c n r | n > r*2   = (n-r+1) * (c n (r-1)) `div` r
      | otherwise = c n (n-r)

(07:13)

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

_ YT [おじゃまします。Debug.TraceあたりIOの付いてないとこでも使えるっぽいです。]

_ shinh [おおあるかなーと思ってたんですがそのくらいはあるのですね。ご紹介ありがとうございます。ちょっとぐぐってみると参照透過..]


2006-06-07

_ byte数数えてみる

http://haskell.g.hatena.ne.jp/nobsun/20060606/p1

を見て。

昨日のをちょっとつめると

c _ 0=1
c n r=div((n-r+1)*c n(r-1))r

で 36byte か。

c n r=div(product[n-r+1..n])$product[1..r]

は 42 byte でちょっと長い。

(07:30)

_ 後者もうちょい小さいか

f=product
c n r=div(f[n-r+1..n])$f[1..r]

(07:39)

_ ようわかってないけど

http://tinyurl.com/ltbyw

これが好意的に受け入れられるんだなぁ…

(08:13)

_ アトランティスの謎

クリア。経路調べたら簡単すぎたな。

無敵無しで100面クリアは無理だった。

(08:27)

_ アトラン_チ_スの謎

だな。そういえばマイク使うゲームだ。

(08:57)

_ hosts.deny

に適当に加えると ssh brute force を止められる。

いろいろめんどいな。

(14:19)

_ 超次世代IDE

http://d.hatena.ne.jp/shinichiro_h/20051109#1131485281

コネタからリンクはってないな。

(22:44)


2006-06-08

_ sdl-freetype

  • SDL_freetypetest.c の main に argc とか
  • acinclude.m4 を加える
  • SDL_GetDefaultFont はやっぱ欲しい
  • それにあわせてテストも変更

(00:09)

_ あとNULL終端チェック

(00:10)

_ おおおお

http://slashdot.jp/article.pl?sid=06/06/08/0250230

子供の頃に妄想した気がする。 学校の試験がげーむだったらどうなるだろう…とか。

いつも喋ってることだけどプログラミングも 料理マンガみたく対決させて欲しいよな。

おーっとあらし君物理エンジンのODEを解凍しはじめたー! 課題はコンパイラなのにどう使うんだ!? おおーっとそして出ました水魚のポーズ!!!

みたいな。 ゲームセンターあらしはすごいマンガだったなぁ。 復刻版の後ろの方についてた作者の回想に 「こんなもんありえるわけないですよね」 みたいなこと書いてたのは少し残念だったけど。

一方車田正美は本気だった。

http://www5e.biglobe.ne.jp/~saint/goroku.htm

(13:22)

_ 明日

どうするね

(23:39)


2006-06-09

_ ISer

は、あいえっさーらしい

アイエッサーーーーーーーーーーーーーーーーーーーーーー!

(02:28)

_ コレクター

気がついたら割とたくさんある。

i@u ~> /bin/ls -1 arch/hyperestraier-*
arch/hyperestraier-0.3.13.tar.gz
arch/hyperestraier-0.5.0.tar.gz
arch/hyperestraier-0.5.1.tar.gz
arch/hyperestraier-0.5.2.tar.gz
arch/hyperestraier-0.5.3.tar.gz
arch/hyperestraier-0.5.7.tar.gz
arch/hyperestraier-0.9.0.tar.gz
arch/hyperestraier-0.9.1.tar.gz
arch/hyperestraier-0.9.2.tar.gz
arch/hyperestraier-1.0.0.tar.gz
arch/hyperestraier-1.0.1.tar.gz
arch/hyperestraier-1.0.2.tar.gz
arch/hyperestraier-1.0.3.tar.gz
arch/hyperestraier-1.0.6.tar.gz
arch/hyperestraier-1.1.0-experimental.tar.gz
arch/hyperestraier-1.1.6.tar.gz
arch/hyperestraier-1.2.0-experimental.tar.gz
arch/hyperestraier-1.2.1.tar.gz
arch/hyperestraier-1.2.2.tar.gz
arch/hyperestraier-1.2.3.tar.gz

しょっちゅう消すせいか、案外すくない。

i@u ~> /bin/ls -1 arch/gcc-*
arch/gcc-1.42.tar.gz
arch/gcc-core-4.0.3.tar.bz2
arch/gcc-g++-3.4.0.tar.bz2
arch/gcc-g++-4.0.0.tar.bz2
arch/gcc-g++-4.0.2.tar.bz2
arch/gcc-g++-4.0.3.tar.bz2
arch/gcc-java-3.4.0.tar.bz2
arch/gcc-java-4.0.2.tar.bz2
arch/gcc-java-4.0.3.tar.bz2
arch/gcc-objc-4.0.2.tar.bz2

(08:04)

_ dmdscript 見ていく

http://www.kmonos.net/alang/etc/ecmascript.php

の例をかたっぱしから実行。

匿名関数を () で囲ってほげれない、のかな。

i@u ~/test/js> cat ki10.ds
var x = ( function(a, b) {
        return (a==0 ? b : arguments.callee(b%a, a));
    } )( 60, 84 );
println( x );
i@u ~/test/js> ds ki10.ds
Digital Mars DMDScript 1.10
www.digitalmars.com
Compiled by Digital Mars DMD D compiler
Copyright (c) 1999-2006 by Digital Mars
written by Walter Bright
1 source files
Error: (1) : Error: cannot assign to function (a,b)
{
return b ? arguments.callee(b % a, a);
}
i@u ~/test/js> cat ki11.ds
var f = function(a, b) {
        return (a==0 ? b : arguments.callee(b%a, a));
}
var x = f( 60, 84 );
println( x );
i@u ~/test/js> ds ki11.ds
Digital Mars DMDScript 1.10
www.digitalmars.com
Compiled by Digital Mars DMD D compiler
Copyright (c) 1999-2006 by Digital Mars
written by Walter Bright
1 source files
12

closure が無いのかね。

i@u ~/test/js> cat ki12.ds
function map( arr, f )
{
    var newArr = new Array(arr.length);
    for( var i=0; i<arr.length; ++i )
        newArr[i] = f( arr[i] );
    return newArr;
}

function mem_fn( mf )
{
    println('OUTSIDE: ' + mf);
    return function(obj) {
        println('INSIDE: ' + mf);
        var args = new Array(arguments.length-1);
        for( var i=1; i<arguments.length; ++i )
            args[i-1] = arguments[i];
        return mf.apply( obj, args );
    };
}

x = map(
    ['hoge', 'fuga', 'hagyo'],
    mem_fn( String.prototype.toUpperCase )
);
map( x, println );
i@u ~/test/js> ds ki12.ds
Digital Mars DMDScript 1.10
www.digitalmars.com
Compiled by Digital Mars DMD D compiler
Copyright (c) 1999-2006 by Digital Mars
written by Walter Bright
1 source files
OUTSIDE: function toUpperCase() { [native code] }
INSIDE: undefined
Error: Undefined undefined.apply is undefined and has no Call method

関数に name メソッドが無いかしら。

i@u ~/test/js> cat ki14.ds
function Point()
{
    this.x = 0;
    this.y = 0;
    this.distanceFromOrigin = function()
    {
        return Math.sqrt( this.x*this.x + this.y*this.y );
    }
}

var pt = new Point();
pt.x = 5;
pt.y = -12;

println( pt.distanceFromOrigin() );

println( pt.constructor );
println( pt.constructor.name );
i@u ~/test/js> ds ki14.ds
Digital Mars DMDScript 1.10
www.digitalmars.com
Compiled by Digital Mars DMD D compiler
Copyright (c) 1999-2006 by Digital Mars
written by Walter Bright
1 source files
13
function Point()
{
}

undefined

こっちは closure ぽく動くな。

i@u ~/test/js> cat ki16.ds
function Point()
{
    var x = 0;
    var y = 0;

    this.getX = function() { return x; }
    this.getY = function() { return y; }
    this.set  = function(i_x, i_y) { x=i_x; y=i_y; }
}

var pt = new Point();
pt.set(100, 200);
println( pt.getX() + ' ' + pt.getY() );
i@u ~/test/js> ds ki16.ds
Digital Mars DMDScript 1.10
www.digitalmars.com
Compiled by Digital Mars DMD D compiler
Copyright (c) 1999-2006 by Digital Mars
written by Walter Bright
1 source files
100 200

scope chain の話、の部分も当然だめ。 closure 系悲しす。

MS 拡張らしいが動く。

i@u ~/test/js> cat ki24.ds
// written for JScript.NET
function Point()
{
    this.x = 0.0;
    this.y = 0.0;
}

function Point.prototype.distanceFromOrigin()
{
    return this.x*this.x + this.y*this.y;
}

println( (new Point()).distanceFromOrigin() );
i@u ~/test/js> ds ki24.ds
Digital Mars DMDScript 1.10
www.digitalmars.com
Compiled by Digital Mars DMD D compiler
Copyright (c) 1999-2006 by Digital Mars
written by Walter Bright
1 source files
0

arity もあるみたい。

i@u ~/test/js> cat ki25.ds
// written for Rhino
function add(x, y)
{
    return x + y;
}
println( add.arity );
i@u ~/test/js> ds ki25.ds
Digital Mars DMDScript 1.10
www.digitalmars.com
Compiled by Digital Mars DMD D compiler
Copyright (c) 1999-2006 by Digital Mars
written by Walter Bright
1 source files
2

__proto__ はない。

i@u ~/test/js> cat ki26.ds
// written for Rhino
var objA = { f: function(){print("objA")} }
var objB = { f: function(){print("objB")} }
var objC = new Object();
var objD = new Object();
var objE = new Object();
objD.__proto__ = objE.__proto__ = objC;

objC.__proto__ = objA; // Cのプロトタイプ変更
objD.f();
objE.f();

objC.__proto__ = objB; // Cのプロトタイプ変更
objD.f();
objE.f();
i@u ~/test/js> ds ki26.ds
Digital Mars DMDScript 1.10
www.digitalmars.com
Compiled by Digital Mars DMD D compiler
Copyright (c) 1999-2006 by Digital Mars
written by Walter Bright
1 source files
Error: Object [object Object].f is undefined and has no Call method

a.caller も無いみたいね。

// written for MocaScript
function f1() { f2(); }
function f2() { f3(); }
function f3() { f4(); }
function f4() { f5(); }
function f5() {  g(); }
function g() {
    for(var a=arguments; a; a=a.caller) // 呼び出し元を順にたどる
        if( a.callee == f1 ) // 呼び出され関数がf1なら…?
            println("g was called inside f1");
}

f1();
i@u ~/test/js> ds ki27.ds
Digital Mars DMDScript 1.10
www.digitalmars.com
Compiled by Digital Mars DMD D compiler
Copyright (c) 1999-2006 by Digital Mars
written by Walter Bright
1 source files

(09:00)

_ 自分で関数定義

import dmdscript.script;

void* Dglobal_hello(Dobject pthis, CallContext *cc,
                    Dobject othis, Value* ret, Value[] arglist)
{
    writef("hello\n");
    return null;
}

int main() {
    static char[] TEXT_hello = "hello";
    static NativeFunctionData nfd[] = [
    { &TEXT_hello, &Dglobal_hello },
    ];

    Program p = new Program();
    DnativeFunction.init(p.callcontext.global, nfd, DontEnum);
    p.compile(`test1`, `println('hello1'); hello();`, null);
    p.execute(null);

    return 0;
}

compile するごとに別の状態になるので、 Web なんかで使ってる JS 的な、 状態持たせてちょっとずつ走らせるとかできんぽい。

うーん、使えない…

(09:42)

_ 方針転換

んじゃ SpiderMonkey …もなんかアレだったので SEE に。

(10:16)

_ 入門Haskell

僕はモナドの章の引用が ディアスポラだったのでうっかり衝動買いしてしまった。

世間的にはふつけるの方が人気なのかしら。 とりあえず、ある程度はわかっていたであろう僕には わかりやすいなぁ。 1年前の僕ならちょいキツかったかもだけど。

(23:19)


2006-06-10

_ http://www.sixnine.net/roadside/find.html

_ Unix 使いこなし系あとでよむ。

_ (04:46)

_ 80GB をどう使うか

Windows のパーティションの切り方はよくわからない。

  • 40GB - Windows
  • 15GB - Ubuntu /
  • 15GB - Ubuntu /home
  • 1GB - swap
  • 9GB - 遊び

こんな感じかなぁ。

Linux いるのかなぁ? coLinux でいい気がする。

つかデスクトップをメインにしてもいいという話もあるのだが。

とりあえず testgl_net 走らせてみて考えるとか。

(05:15)

_ 現状

  • R40e, Cel1.7GHz, 512MB, 80GB, FC5, 2.6.15, メイン
  • 玄箱, PPC200MHz, 64MB, 80GB, etch, 2.4.17, 雑用サバ
  • L3, Crusoe 600MHz, 256MB, 20GB, Win2000, 持ち運びWindows
  • Presario 1200, Duron800MHz, 128MB, etch, 2.6.7, Debian実験機
  • DELL, Cel2.53GHz, 256MB, 80GB, XPPro, ほげ
  • DELL, Xeon 3.2GHz*2, 1GB, 120GB, FC4, 2.6.16, NII
  • DELL, Pen4 2.53GHz, 1GB, ?, FC3, ?, UT

さくらのクローン環境が欲しい。 Presario に FreeBSD つっこむか。

(06:20)

_ sdmkun fix

  • util.h PolarCoord
  • screen.h update

(10:27)

_ Windows XP

では非 ASCII への isspace は信用ならんようだ。 なんでかは知らん。

(11:47)


2006-06-11

_ うおー

imap も imaps もあいてねー

あいてるの pop3s とかじゃん。騙された。

(01:08)

_ Ruby

使ったら拒絶反応が出た。 すごいイライラする。

良きかな。

(04:16)

_ img タグで隠しつつ色変えるのは

CSS で表示ヘンにしてるのとさしてかわらない。

要するに何が言いたいかというと世間の Ajax Wiki はけしからんと。

(05:13)

_ TSS

  • 色がなんか
  • 村生成調整
  • アクション入れる?
  • プレビュー

(15:44)

_ 3Kっていうけど

金持ち賢いかっこいいとかでも3Kじゃないか。

(18:49)

_ スパムよけ

http://haskell.g.hatena.ne.jp/nobsun/20060611/p3

を見て思った。

main = putStrLn ("hamaji" ++ at ++ "nii" ++ dot ++ "ac" ++ dot ++ "jp")
    where at = "@"
          dot = "."

(21:36)

_ 実行結果

書いたら意味ない。

(21:36)


2006-06-12

_ Gallery of Computation

http://www.complexification.net/

via http://d.hatena.ne.jp/MDA/20060612/1150046311

かっこいいなぁ

漠然とこういうのに対する憧れがあるんだが 何していいかいまひとつピンと来ないんだよなぁ。

(02:51)

_ Ubuntu

インストールできなかった。

どうすっかな。

  • 例のごとく根性でなんとか(そんな元気ない)
  • 例のごとくノートPCからコピーでインストール(FC5になっちゃうけど)
  • Debian(なんとなくいや)
  • coLinux(耐えられると思いがたい)

(07:18)

_ 今日は

学校に行くべきかNIIに行くべきか、というのはいつも悩むのだが。

学校に行く理由は健康診断とサーバの設定か… NIIかなぁ。

(07:21)

_ (^^).hs

i@u ~/test/hs> cat beki.hs
len2 x y = (^^) x 2 + (^^) y 2
i@u ~/test/hs> ghci beki.hs
   ___         ___ _
  / _ \ /\  /\/ __(_)
 / /_\// /_/ / /  | |      GHC Interactive, version 6.4.1, for Haskell 98.
/ /_\\/ __  / /___| |      http://www.haskell.org/ghc/
\____/\/ /_/\____/|_|      Type :? for help.

Loading package base-1.0 ... linking ... done.
Compiling Main             ( beki.hs, interpreted )
Ok, modules loaded: Main.
*Main> len2 3 4
25.0

今さら何を言ってるという感なんだろうな。

(08:12)

_ refe.el

あとで入れる

(20:40)

_ 論文かき

ノイズを noize と綴ってしまいます…

(21:00)


2006-06-13

_ -develインストールまつり

lib*-devel が入っていない lib* なんていらない。

i@u ~> rpm -qa | egrep '^lib' G devel | sort | perl -pe 's/devel-//' > devel
i@u ~> rpm -qa | egrep '^lib' G -v devel | sort | perl -pe 's/devel-//' > libs
i@u ~> diff libs devel | perl -pe 's/< //' G lib | perl -pe 's/-.*/-devel/' > devs
i@u ~> for i in `cat devs`; do                                           ~ 1:50
echo $i; sudo apt-get install $i
done

(01:52)

_ サーバURL

http://slashdot.jp/article.pl?sid=06/06/12/2111252

サーバURLはntp.nict.jpとなっている。" (つづく...)

それURLなんか。

(10:45)


2006-06-14

_ 2度目の暗黙インスタンス化パターン

ほめてもらたーと思いつつ。

なんというか、書いてる最中とか 書き終わった後は何がキモだったか覚えてるけど、 memo/hatena 書いてる最中は忘れてる現象。

ぷろぐらむの語彙が貧弱な僕こそ 適当に名前をつけてキモを把握しておいた方がいいんでないかとか、 いややっぱデザパタ重要なんじゃないかとか。 だいたい自分のできたことすら把握してないから 人と話す時困るんだ。

マッチング能力は、 暗黙テンプレート引数>明示テンプレート引数>static if の : 、 なんだけど、 C++ だと 暗黙のテンプレート引数でマッチさせたものは関数なので、 そこから型を取り出すことが(たぶん)できない。 その関数を実際に呼んでしまってクラス返せばできるけどね。 でも D は typeof あるから取り出せるぜへへん、っていう話か。

static if はええとなんで弱いんだっけ。 思い出せんのだからメモをすべきだ。

ええと…

is ((T, U) : ???) って感じで書きたかったのは覚えている。

思い出した。

is (T (U, V) : U function(V)) と書きたかったんだ。 つかこれできたら暗黙テンプレートと同じマッチ能力あるじゃん。

つか2変数以上の部分特殊化ができない、 って書いてくれてるじゃん。

暗黙テンプレート引数>明示テンプレート引数=static if の :

だなたぶん。

やっとノウハウとして蓄積できた気がした…

D in depth Wiki とか作って C++ と違うテクニックを集積するとか。

誰が見るんだ、って勢いの Wiki を。

集積したテクニックはたぶんよく使えそうなものは もっと簡単な文法を Walter さんが導入しちゃうんだろうけど、 まぁ言語の進化ってのはそういうものだろう。

とりあえず /template/ みたいなノリで ひどい状態の /d/ をなんとかしよう。

(01:20)

_ C++

いったん関数呼んだらできる…のか? できなくね。

(01:29)

_ もけー

現実逃避するな

(01:30)

_ 現実逃避

前から思ってるけど、 いろいろタイムリーな気がするので bind が書きたい。

しかし現実逃避はよくない。良いんだけど。

過度の現実逃避はあなたの社会生活を害する恐れがあります。

(01:43)

_ argtypeN

をおされに書く方法が無ければやる気が起きないと気付く。

なんとかして再帰的な定義に持ち込めないか…

void (T t, ...) と void (T t) のオーバロードが できればなんとかできそうだけどできない。

つかそれがなんとかできても tail みたいなのが実装できんか。

argNum は実装できそうだなぁ。

TODO: 現実逃避をやめる。

(03:36)

_ そいや

なんかみんなやってるけど オサレな関数とか作るのもういいから、 だって別に他の関数型言語でもいいしな、 モナドとか型やろうぜーとか言ったら

http://haskell.g.hatena.ne.jp/mr_konn/20060613/1150213544

やった。

いやすげーなあああああ

(けど実は簡単な)IOモナド

というフレーズが実にクルものが。

IO はやっぱ IO って名前でいい気がします。 あと do の外でモナド外せたらマズくね、とか。

次はぜひ型をお願いします。

(07:13)

_ 少し寝て起きたら

n^2 の場合の N-cat state の SNR を計算する。

決して bind を書くんじゃない。

(09:59)

_ それぞれをどう定義したとしても

auto dubl = convolution(&concatMap, &replicate);

とは書けない気はする。 うぬぬ生意気な。

けど本当にできないのかな。 なんかほげほげできそうな。

メモ template opCall

(12:51)

_ signature.d

   int func(char, bool, char[], int[char[]]);
   alias functor!(typeof(&func)) f;
   static assert(is (f.rettype == int));
   static assert(is (f.argtypes == TL!(char, bool, char[], int[char[]])));

ふむ。割にあっさりできた。

(18:48)


2006-06-15

_ やっぱよく考えると

opCall 実装できないな…

よく考えてわかったんならいいんだけど、 他実装してからわかったというのが悲劇。

(01:07)

_ よくわからんが

やっぱできる、か。

(01:10)

_ signature.d

ごめんなさい再帰的にほげほげはこりゃ無理だと思って諦めました。

オサレじゃなくてもすぐできたから、 あっさりできた、と書いたとか。

具体的にはこんな感じの rettype と argtype ができれば自明な実装。

http://shinh.skr.jp/tmp/signature.d

(16:27)


2006-06-16

_ なんか

一瞬でやる気がうせた

(00:38)

_ あのさあ氏

http://makimo.to/2ch/yasai_arc/982/982835694.html

こんなかっこいい人だったのか…!

(04:09)

_ へえええ

http://slashdot.jp/mobile/article.pl?sid=06/06/15/1454239

それでテレビ動いてるかわかんないのか…

(10:43)

_ Haskell自体が

頭の体操のための言語じゃなかったのか! あ、それとクイックソートか。

それはともかく最近 D も頭の体操以外の何者でもない。

(15:08)

_ OOPは銀の弾丸

だなんて言ってるヤツが失望してほげほげなのさ、 とシニカルに言うのが流行りらしいから、 関数型言語が銀の弾丸だと言ってるヤツはほげほげなのさ、 と言うことにしようか。

(15:10)

_ 今日の残った時間は

論文を忘れよう。何か作ろう。ネタを。

(15:11)

_ 前もメモった気もするが Safari AJAX

結局、リクエストは UTF-8 で来てるので、 それを EUC になおさず処理しちまうのが一番良い。

そんで

http://kawa.at.webry.info/200511/article_9.html

紅茶は text/plain だからうまくいってるのかなぁ。 よくわからん。

(22:39)


2006-06-17

_ うおー

モーションは相対位置で記述すべきだったよ…

(10:18)


2006-06-18

_ てすとめーるです

(02:29)

_ brainf*ckでも書いてみよう…

とか思ったけどやめた。 割に簡単そうだけどめんどすぎる。

(23:21)


2006-06-19

_ うへえ

62byteかい。

(12:07)

_ こんぴゅーたの進化は Apple が独り占め☆

http://tinyurl.com/f83fo

(17:41)

_ d530s

(19:24)


2006-06-21

_ もな

_ へへへ

_ まけ

_ (19:18)


2006-06-22

_ やわらか

おっぱい塾

(01:40)

_ 清書

template <class T> struct S {
private:
    static T m();
public:
    enum { t = sizeof(m()) };
};

についてヒマな時追ってみる。

(01:41)

_ sizeof

int i; sizeof i; は合法、 sizeof int は非合法。

(01:43)

_ とうふ

i@un ~> grep '^とうふ ' /usr/share/skk/SKK-JISYO.L
とうふ /豆腐/豆富/■/

(19:05)

_ しんどい

というか寒気。

(19:11)


2006-06-23

_ しんどい

(01:01)

_ DS ブラウザ

かー。

何に使うんやろ。

(02:33)


2006-06-24

_ うにまがが終わったらしい

別に残念でもないような…?

(02:41)

_ template

がどうとか言ってる子はキモい子です! って話があったんだけど、 みんなどういう理由でそんな子になってしまったんだろうか… あと妙に同世代が多い気がするんだよな。 少し上の人は I hate C++! がデファクトに なりきっているというか。

世界で2番目に誤解された言語 C++ 。とかどうだろう。

いや、別に誤解はされてないな…

まぁそんなこんなで最近見てる人の経歴を適当に見てみる。

http://d.hatena.ne.jp/Cryolite/

同世代の模様。

http://d.hatena.ne.jp/rinset/

奥さんがいらっしゃるってことは少し上かしら。 しかし最近はそういう判断は外れる歳になっている。

http://d.hatena.ne.jp/syd_syd/

大学院生さんらしい。 いかにも言語好きーな人なのでわかりやすいかな。

http://d.hatena.ne.jp/y-hamigaki/

今気付いたけど cppll でよく見る人だったよ!

http://d.hatena.ne.jp/mb2sync/

あーそういや Boost.Typeof 見てみないとなーと思ったんだった。 http://d.hatena.ne.jp/mb2sync/20050422#p1 はあとで見る系。

結局世代とかよくわからんかったけど なんでもいいや。

(03:07)

_ Boost.typeof

http://www.accu-usa.org/2000-05-Main.html

あれーユーザ定義型はーと思ったら REGISTER_TYPEOF とかあるな…

しんどいけどマジメに追ってみよう…

#include <iostream>
#include <list>
#include <boost/typeof/typeof.hpp>

using namespace std;
using namespace boost;

struct C {
    C() { cout << "hello world!" << endl; }
};

int ifunc() { return 0; }
list<int>::iterator itefunc() { static list<int> l; return l.begin(); }
C cfunc() { return C(); }

int main() {
    BOOST_AUTO(i, ifunc());
    BOOST_AUTO(ite, itefunc());
    BOOST_AUTO(c, cfunc());
}

ああうん。すごいな。

(03:36)

int main() {
    BOOST_TYPEOF(cfunc()) c = cfunc();
    c = *(new BOOST_TYPEOF(cfunc()));
}

_ が、 cl.exe だと、

int main() {
    boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(cfunc()))>::type c = cfunc();
    c = *(new boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(cfunc()))>::type);
}

_ こうなる。 GCC だと __typeof__ になる。

_ インスタンス化するたびにカウントアップする template とか作れば、 まぁこれで作れるかなぁ。

_ で、インスタンス化するたびにカウントアップねえ…

#include <iostream>
#include <list>
#include <boost/typeof/typeof.hpp>

using namespace std;
using namespace boost;

struct C {
    C() { cout << "hello world!" << endl; }
};
struct D {};

C cfunc() { return C(); }
C cfunc2() { return C(); }
D dfunc() { return D(); }

int main() {
    BOOST_TYPEOF(cfunc()) c = cfunc();
    c = *(new BOOST_TYPEOF(cfunc()));
    cout << sizeof(*boost::type_of::encode_start(cfunc())) << endl;
    cout << sizeof(*boost::type_of::encode_start(cfunc2())) << endl;
    cout << sizeof(*boost::type_of::encode_start(dfunc())) << endl;
}

_ が、 5 5 6 と出力する。明らかにカウンタがある。

_ http://boost-sandbox.cvs.sourceforge.net/*checkout*/boost-sandbox/boost-sandbox/boost/typeof/msvc/typeof_impl.hpp?revision=1.5

_ どう見てもカウンタみたいです。 実装がよくわからんがな。

_ あとまぁ msvc/ 以外の実装は不明チックな。 compliant implementation もよくわからんけど、 要するに BOOST_PP マンセーってことですか。

_ んー。なんか昔見たことある気が超するんだよなぁ。

_ (04:26)

_ あれ

むっちゃカンタンじゃん。

TypeList に放り込んでその Length 返すだけ。 以上。

(04:35)

_ いや違うだろと思ったりしつつ

なんかだいたいわかった気もした。

気が向いたらちゃんと追う。

(05:24)

_ server side JavaScript

最初聞いた時は冗談レベルに思ったけど、 もっと評価されていいよなぁという気がした。

このへんとかも面白げである。

http://www.tohoho-web.com/html/server.htm

(05:32)

_ 宇多田とテトリス

http://club.nintendo.jp/tetris_campaign/index.html?C

(19:40)


2006-06-25

_ MML敵パターン

http://www.liarsoft.org/diary/20060620.html#20060620p1

なるほどそのまんま使えって話だなぁ…

(02:23)

_ C++ の template はバッドノウハウ

と言われて少し違う気がしたんだけど。

なんというかじゃすとふぉーふぁんのうはうというか。 グッドでもバッドでもなくて、 ホビーノウハウというか。

コード短縮もホビーノウハウ。

(23:19)

_ リプレイについて

聞くの忘れてたな。

(23:23)


2006-06-26

_ PKU1981

http://acm.pku.cn/JudgeOnline/problem?id=1981

なんとなく誕生年問題見てみたけど割に楽しげ。

(00:58)

_ PKU1521

b,l,s[99];main(m,n,i,w,x,y,z){
    for(;;){
    for(;n=getchar(n)-10;l+=8)s[n]++;
    if(l==24&&s['E']==s['N']==s['D']==1)break;
    z=85;
    x=55;
    for(;;){
        s[m=n=99]=9999;
        w = 0;
        for(y=i=x;i<=z;i++){
            if(s[i]) {
                if(!w)w=i;
                y = i;
                if(s[i]<s[m]){
                    if(s[i]<s[n]){m=n;n=i;}
                    else m=i;
                }
            }
        }
        x=w;
        z=y;
        if(m==99)break;
        b+=(s[m]+=s[n]);
        s[n]=0;
    }
    printf("%d %d %.1f\n",l,b,1.*l/b);
    b=l=0;
    }
}

適当にCで書いてその場しのぎの高速化しても通らなかった。 なんかCで通ってる人いるんだけどなぁ。 まぁC++の方が短くなりそうな気すらする。

(02:53)

_ PKU1521

#include<cstdio>
#include<set>
int m,n,b,l,i,k[99];main(){
    std::multiset<int>s;
    for(;;){
        for(;n=getchar()-10;l+=8)k[n]++;
        if(l==24&&k['E']==k['N']==k['D']==1)break;
        for(i=55;i<=85;i++){if(k[i])s.insert(k[i]);}
        for(;s.size()>1;){
            std::multiset<int>::iterator i=s.begin();
            m = *i;
            s.erase(i++);
            n = *i;
            s.erase(i);
            b+=(m+=n);
            s.insert(m);
        }
        printf("%d %d %.1f\n",l,b,1.*l/b);
        b=l=0;
    }
}

おやこれでもTLE。ダメじゃん!

(03:09)

_ ウケるな

配列の初期化忘れてます。

(03:24)

_ 1521

*m,*n,*i,s[99];main(b,l){
for(;m=n=memset(s,0,396);printf("%d %d %.1f\n",l,b,1.*l/b)){
    for(l=0;b=getchar()-10;l+=8){
        s[b]++;
        if(b-l==60)return;
    }
    for(b=0;m-s-1;){
        b+=*m+=*n;
        *n=0;
        m=n=s+1;
        *m=99;
        for(i=s+86;*i-99;)
            *--i&&*i<*m?*i<*n?m=n,n=i:(m=i):0;
    }
    b=b?b:l/8;
}
}

250Byte。さっさとアルゴリズムいじれと

(04:53)

_ 外人が

wwrrrrrrrryyyyyy !!!11'

と言っていた。本当に言うんだな。

(18:21)

_ 日経新聞

web2.0がどうとか

(18:35)


2006-06-27

_ 1日1Ruby

がホントかどうかチェックしよう。

昨日は gopku.rb

s = ''
`cpp #{ARGV[0]}`.split(/\n/).each do |l|
  next if l =~ /^#/
  s += l.sub(/^ */, '').chomp
end

File.open('out', 'w') do |o|
  o.print s
end

p s.size
system("xclip < out")

PKU に Submit するために C のコードをコメント除去・空白削除して コピーバッファにつっこむ。

今日は prod.rb

|000>+|001>+|010>+|100>+|111> が 4項で書けないことを 証明したいらしいんで反例探しで 簡単なケースだけチェック。 まぁ結果見つからんかった。

def get(s, i)
  s & (1 << i) != 0 ? 1 : 0
end

def st(s, t)
  if (t == 0)
    s.to_s
  else
    ['0+1','0-1'][s]
  end
end

def state_str(s, t)
  r = ''
  for i in 0...12
    r += '(' + st(get(s, i), get(t, i % 3)) + ')'
  end
  r
end

def addterms(as, *ts)
  r = []
  ts.each do |t|
    as.each do |a|
      b = t.dup
      e = a.dup
      if e =~ /^-/
        e.sub!(/^-/, '')
        if b =~ /^-/
          b.sub!(/^-/, '')
        else
          b = '-' + b
        end
      end
      r.push(b+e)
    end
  end
  r
end

def addminus(t, m)
  if m == 1
    if t =~ /^-/
      t.sub(/^-/, '')
    else
      '-' + t
    end
  else
    t
  end
end

for m in 0...16
  p m

  for t in 0...8
    for s in 0...4096
      st = Hash.new(0)
      for i in 0...4
        a = []
        minus = get(m, i)

        if get(t, 0) == 0
          a.push(addminus(get(s, i*3).to_s, minus))
        else
          if get(s, i*3) == 0
            a.push(addminus('0', minus))
            a.push(addminus('1', minus))
          else
            a.push(addminus('0', minus))
            a.push(addminus('-1', minus))
          end
        end

        if get(t, 1) == 0
          a = addterms(a, get(s, i*3+1).to_s)
        else
          if get(s, i*3+1) == 0
            a = addterms(a, '0', '1')
          else
            a = addterms(a, '0', '-1')
          end
        end

        if get(t, 2) == 0
          a = addterms(a, get(s, i*3+2).to_s)
        else
          if get(s, i*3+2) == 0
            a = addterms(a, '0', '1')
          else
            a = addterms(a, '0', '-1')
          end
        end

        a.each do |at|
          e = at.dup
          if e =~ /^-/
            e.sub!(/^-/, '')
            st[e] -= 1
          else
            st[e] += 1
          end
        end

      end

      if st.key?('000') && st.key?('111') && st.key?('001') && st.key?('010') && st.key?('100') && st.size == 5
        p state_str(s, t)
        p st
      end
    end
  end
end

(21:35)


2006-06-28

_ ジョセフソン

http://www.amazon.co.jp/exec/obidos/ASIN/4198607028/503-4855349-7085504

科学だけが本当に唯一、真理にアクセスできる方法なのだろうか…知性の本質を求めて
「プラトン的世界」=「精神の空間」へ決然として踏み入った天才ジョセフソンの封印さ
れた科学的研究の足跡を辿る―。サイコキネス・テレパシー・遠隔透視から音楽の起源
に至るまで、未解明現象の謎に量子で迫る“禁断の研究”30年間の成果―。

すげーーー

(06:49)

_ bit Generation

なんか重力調節のゲームと六角形のヤツ。

見た目に重力の方が面白そうだったのでそっちをやる。 まぁ面白い。 ABボタンだけで2次元空間を移動する ゲームにちゃんとなってるのはたいしたもんかなぁ。 まぁ実際面白いんだけど、わりと退屈で、 カタルシスとかあんま無い。 まぁなるほどちゃんとできてるねぇ、という感じで、 あーそれ以上でもそれ以下でもなくて、 企画通り、試みとしては面白いっていうのはわかるし、 こういうことできる任天堂すげーとは思うんだけど、 ゲームの本質はココにアリ、みたいなのはまぁ違うだろうと。

そんで六角形の方は面白くないパズルだった。 まぁこれはまぁ微妙とかを越えて普通に面白くない。 パズルゲームってまぁルールは無数に考えられて、 深みにはそれほどの差は無いんだろうけど、 こう、だからこそ、わかりやすいカタルシスが 必要なんだろうなぁと。 テトリスは何を目指すかが十分わかりやすいし、 ぷよぷよは連鎖で爽快☆みたいな感じだし、 パネポンはまぁアクション連鎖とか見るからに楽しいし、 あとメテオスとかもなんかこう気持ち良さみたいなのは あるんだろうたぶんみたいな。 そういうのが無い以上、六角形のはパズルゲームとして ルールが妥当かどうかとか判断する次元にすら達せないというか。

ケータイとかのゲームとしてなら いい気がするんだけれども、 ゲーム機のゲームとしてはやはりこう物足りない系な。

あーでもなんか、今時のゲームの演出に慣れたウチらは 昔の薄味ではほげほげできんのですよ、みたいな、 ええと聖学では逆だった気もするけど、 どうでもいいや。 つまりそういう状態になってるとすれば 僕の方に問題があるとも考えられるし、 まぁ実際昔熱中したゲームウォッチとか 今じゃ絶対できんし、 結論はまぁよくある話だけど、 まぁ眠いなぁと。

あとなぜかアゴが痛い。なぜ?

(13:40)

_ S式パーサ

i@u ~/wrk/bf> ghci sbf.hs
   ___         ___ _
  / _ \ /\  /\/ __(_)
 / /_\// /_/ / /  | |      GHC Interactive, version 6.4.1, for Haskell 98.
/ /_\\/ __  / /___| |      http://www.haskell.org/ghc/
\____/\/ /_/\____/|_|      Type :? for help.

Loading package base-1.0 ... linking ... done.
Compiling Main             ( sbf.hs, interpreted )
Ok, modules loaded: Main.
*Main> test sexpr "(a b (c (d) e) f)"
Loading package parsec-1.0 ... linking ... done.
[a,b,[c,[d],e],f]

動いたわー

import Text.ParserCombinators.Parsec
import qualified Text.ParserCombinators.Parsec.Token as P
import Text.ParserCombinators.Parsec.Language
import Text.ParserCombinators.Parsec.Expr

sbfStyle =  emptyDef
            { commentStart = ""
            , commentEnd = ""
            , commentLine = ";"
            , nestedComments = False
            , identStart = identLetter sbfStyle
            , identLetter = alphaNum <|> oneOf "_':!#$%&*+./<=>?@\\^|-~"
            , opStart = oneOf ""
            , opLetter = oneOf ""
            , reservedOpNames = []
            , reservedNames = []
            , caseSensitive = True
            }

lexer = P.makeTokenParser(sbfStyle)

whiteSpace = P.whiteSpace lexer
lexeme     = P.lexeme lexer
symbol     = P.symbol lexer
natural    = P.natural lexer
parens     = P.parens lexer
semi       = P.semi lexer
identifier = P.identifier lexer
reserved   = P.reserved lexer
reservedOp = P.reservedOp lexer

data Sexpr = IntConst Integer
           | Ident String
           | Expr [Sexpr]

instance Show Sexpr where
    show (IntConst i) = show i
    show (Ident i) = i
    show (Expr e) = show e

expr = many sexpr >>= return . Expr

sexpr = parens (expr >>= return) <|>
        (identifier >>= return . Ident)

test p s = case parse p "" s of
             Left err -> print err
             Right n -> print n

(19:17)


2006-06-29

_ そこでまぁCleanじゃないかと思うんですが

http://d.hatena.ne.jp/ytqwerty/20060628#p2

  • 流行ってないし
  • ぶっちゃけモナドはイヤだ
  • 一意性とかもなんかめんどそうだけどマシそう
  • パーサコンビネータあるらしいし
  • 部屋が綺麗になりそう

(00:13)

_ 隆盛

  • やさしいClean入門
  • Clean is the programming tool of choice for discriminating hackers. @ICFP
  • Cleanが優秀なんじゃなくてClean使えるヤツが優秀なんだ!
  • クリディウス
  • ふつくり
  • Clean使ったら負け
  • 部屋がきたなくなる

(00:26)

_ キレート水

http://www.e-net.or.jp/user/kasagi/mizu/index.htm

via http://d.hatena.ne.jp/studiokingyo/20060626#p1

効くメカニズムが全然不明。 まぁニセ科学ぽい。

まぁせいぜい漢方じゃないかな…

あと高い。

http://tinyurl.com/pot6t

(00:41)

_ ORBITの方は

明らかに面白いじゃないか…

お昼はなんかイヤなことあったんかというくらいヒネたこと 思っていた気がする。

とりあえずクリア。

(04:48)

_ 予定

  • 即値変数の内容は基本的に毎度消す
  • 勝手に足していくモデルだと微妙だから文字列も返す
  • レジスタの方は

(06:48)

_ ここの検索

なんか検索できんかったので squeeze しなおした

(18:06)

_ ポンド換金

イギリスはユーロじゃないらしい。

んじゃユーロ使う機会はしばらくなさげなので、 持ってるユーロを直接換金する方向で。

http://tinyurl.com/rojjg

54ポンドくらいらしい。 まぁ1週間だしどうせクレジットカードあるから足りるんじゃね…

(18:08)

_ プラグ買え

イギリス用のヤツを。

(18:20)

_ ブリストルの地図

http://rko.jp/sherlock_holmes-hakushaku_reijou_yuukai_jiken/town-6.html

合言葉はアメノマチ

(19:22)

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

_ niha [イギリスは自分が一番じゃないのイヤなので、一番じゃないEU関係はまだアレみたいですね。ユーロも国民投票一度あったけど..]

_ YT [部屋が綺麗になりそうなのがいいですね!(Clean調べてたらFFIが要望のほうにありました……つまり無いのか)]

_ shinh [へーなるほど。とりあえず適当にぐぐるに国民投票があったのはデンマークかものようです。まぁイギリスも世論調査で反対多数..]


2006-06-30

_ アホコンパイラ

(let (x (getchar))
  (while x
    (putchar x)
    (putchar (+= x 3))
    (putchar x)
    (putchar 10)
    (= x (getchar))
    ))

くらいは動いた。

(08:54)

_ ということで次は

CUL です。 Clean で Unlambda VM 向けコンパイラを書く。 ということは文法は C 。

(11:05)


2006年
6月
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
1.shinh(2014-05-24 03:56) 2.YT(2014-05-24 03:56) 3.niha(2014-05-24 03:56)
search / home / index

全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。

shinichiro.hamaji _at_ gmail.com / shinichiro.h