コードハイライティング

module Main
import StdEnv

Start = take 10 primes

//素数列を求める
primes = sieve [2..]
  where
    sieve [p:rs] = [p:sieve (filter (\x = x rem p <> 0) rs)]

むむ。

-module(test).
-export([hoger/1, send_and_receive/2]).

% 何か受信したらhogeを付けてプロセスPに送る無限ループ
hoger(P) ->
	receive X -> P ! {hoge,X} end,
	hoger(P).

% プロセスPにXを送信して、返事を待つ
send_and_receive( X, P ) ->
	P ! X,
	receive R -> R end.

むむむ。

次に読むことを検討中の本

Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching

Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching

アルゴリズムの勉強を系統立ててやり直してみようかと。せっかくなので、ついでに随分昔にやったC++の知識を復活させようかと思い。
amazon.co.jpはコメントがあまりないけれど、amazon.comのほうはコメントが豊富です。2巻組の本なのですが、2巻目の方の評判は悪いようで。
Generative Programming: Methods, Tools, and Applications

Generative Programming: Methods, Tools, and Applications

C&E本というらしいです。よい評判をどこかで見たので、その次に買ってみようかと。

NestedVM

http://www.brianweb.net/personal/publications.php
スライドでは、メモリを int として表現するとなっていたけれど、
浮動小数点数の扱いはどうするんだろう?
int配列のビットパターンを効率よく floatやdouble に変換するテクニックがあるのだろうか?

      • -

http://darcs.brianweb.net/nestedvm/src/org/ibex/nestedvm/ Interpreter.java

    // Floating Point Registers
    private int[] fpregs = new int[32];
    // 24-31 - unused
    // 23 - conditional bit
    // 18-22 - unused
    // 12-17 - cause bits (unimplemented)
    // 7-11  - enables bits (unimplemented)
    // 2-6   - flags (unimplemented)
    // 0-1   - rounding mode (only implemented for fixed point conversions)

    private final double getDouble(int r) {
        return Double.longBitsToDouble(((fpregs[r+1]&0xffffffffL) << 32) | (fpregs[r]&0xffffffffL));
    }
    private final void setDouble(int r, double d) {
        long l = Double.doubleToLongBits(d);
        fpregs[r+1] = (int)(l >>> 32); fpregs[r] = (int)l;
    }
    private final float getFloat(int r) { return Float.intBitsToFloat(fpregs[r]); }
    private final void setFloat(int r, float f) { fpregs[r] = Float.floatToRawIntBits(f); }

これみたい。