ヨーキョクデイ

いろいろ雑食

DLang

D 2.065.0

D言語教…変数は基本immutableで、Rangeによるワンライナーに燃え、コンパイルタイム○○が合言葉で、constが付けられないと嘆き、pureじゃないと嘆き、nothrowにできないと嘆き、破壊的変更を欲する。そんな集団のことだろうか。2013-11-28 23:12:48 via Janet…

テンプレート引数のデフォルト値の位置

std.random に CommonType!(T1, T2) uniform(string boundaries = "[)", T1, T2)(T1 a, T2 b); のようなけしからんテンプレート関数が存在する件。ドキュメントでは末尾のテンプレート引数にはデフォルト値を指定できますとされておるわけだが。それ、引数リ…

続・std.stdio の write 系関数と invariant(char) / immutable(char)

std.stdio の write 系関数と invariant(char) / immutable(char) - ヨーキョクデイ の続き。 DMD 2.029 では某氏の尽力により Phobos が若干すごいことになった。その結果、std.stdio の write 系関数に invariant(char) や immutable(char) を渡すと、それ…

object.Exception: Cyclic dependency in module std.date

なんぞ。 The D Programming Language - Bugzilla Issue 2727 - std.date Cyclic dependency

std.bigint めも

BigInt を連想配列のキーにしたいときは BigInt#toString() で文字列に変換したものをキーにするのが間違いない方法である。

opApply の引数であるデリゲートの戻り値

import std.stdio; class K{ private uint[] a = [3, 1, 4]; int opApply(int delegate(ref uint) dg){ int result; for(uint i; i < a.length; i++){ result = dg(a[i]); writeln("r: ", result); if(result){ break; } } return result; } } void test1(K …

foreach 用フィボナッチ数列生成器

これがいい。 import std.stdio; class Fibonacci(T){ private T current; private T next; private bool isFirstTime; private bool useCountLimit; private size_t countLimit; this(T first, T second){ current = first; next = second; isFirstTime = t…

フィボナッチ数列生成器

Project Euler に数少ない D 言語派として参戦してみたのだが、早速必要になったので作ってみた。 class Fibonacci(T){ private T _current; private T _next; private bool _firsttime; this(T first, T second){ _current = first; _next = second; _first…

std.stdio の write 系関数と invariant(char) / immutable(char)

DMD 2.025 で実験したこと。 std.stdio の write 系関数に invariant(char) や immutable(char) を渡すと、それが表す文字ではなくその文字の ASCII コードが表示される件。つまり、「文字」としてではなくただの整数として扱われているかもしれないというこ…

UPnP のべんきょう

地味にめんどくさげ。Tango 0.99.7 と DMD 1.033 による。 import tango.net.Socket, tango.net.InternetAddress; import tango.io.Buffer; import tango.net.http.HttpHeaders, tango.net.http.HttpConst, tango.net.http.HttpGet; import tango.io.Stdout;…

ベクタの(ポインタ|参照)のベクタ

まず C++ で STL。 #include <vector> #include <iostream> int main(){ std::vector<int> u, v; std::vector<std::vector<int>*> m; m.push_back(&u); m.push_back(&v); for(int i = 0; i < 5; i++){ u.push_back(i); v.push_back(-3 * i); } u[4] = 100; v[2] *= -1; for(std::vector<std::vector<int>*>::iterator m</std::vector<int></std::vector<int></int></iostream></vector>…

Tango の Stdout とかを改めて見てみた

Print.d と Stdout.d を見た。厳密でない説明としては、 Stdout は Print クラスのインスタンスである Print クラスのインスタンスは format() や print() など、自分自身を返すメソッドを持つ それらのメソッドを連鎖させることができる(メソッドチェーン…

Tango の Stdout のような出力関数を JS で・その 3

前回 の続き。 もう少しカオス度を上げるために、関数にゲッタを付けるよ。 var strangeOutput = (function(){ var buffer = ""; var f = function(){ if(arguments.length){ buffer += Array.prototype.slice.call(arguments); // JS 1.6 ならばこれでよい …

Tango の Stdout のような出力関数を JS で・その 2

前回 の続き。 前回はバッファを関数(立派なオブジェクト)のプロパティとし、あえてプロパティ名の頭に "_" を付けることでプライベートなもの風、つまり人為的に外からは見ちゃいけないものとしておいた。これは結局はパブリックなプロパティなのだが、も…

Tango の Stdout のような出力関数を JS で

D 言語スレでもちょくちょく言及される、Stdout("hoge")(4)(3).newline; といったものの気持ち悪さを JavaScript でも味わうべく、似て非なるものを作ってみた。JavaScript で奇妙なことをしてみたかったので。 function strangeOutput(){ var f = arguments…