【D言語】dmdをビルドする【Ubuntu】

Ubunt 13.04環境下でdmdをソースコードからビルドしてみます。g++やgitが必要です。 $ mkdir D && cd D $ git clone https://github.com/D-Programming-Language/dmd.git $ git clone https://github.com/D-Programming-Language/druntime.git $ git clone h…

【D言語】__LINE__と__FILE__の挙動が修正される

前回は、LINEとFILEの挙動を修正するPull Requestについてでしたが、 http://codelogy.org/?p=960 最近、そのPull RequestがMergeされ、LINEとFILEの挙動が修正されました! LINEとFILEの挙動が修正されると、例えば import std.conv : to; import std.stdio…

【D言語】__LINE__と__FILE__の挙動を修正するPullReq

以前、テンプレート引数として使われるLINEとFILEがバグっぽい挙動をするという記事を書きました。 http://codelogy.org/?p=471 が、つい最近、それを修正するPull Requestが来ました。 https://github.com/D-Programming-Language/dmd/pull/2617 ドキュメン…

【D言語】std.exception.ifThrown

std.exceptionにはifThrownという関数があります。ifThrownは、例外が投げられた時、投げられた例外に応じて任意の値を返すことができるものです。通常のtry catchよりも関数型な書き方ができます。 module main; import std.conv : to, ConvException; impo…

【D言語】パッケージマネージャとしてのdub

前回の記事では、どちらかというとビルドツールとしてのdubの紹介になりました。今回は、パッケージマネージャとしてのdubを見てみます。 code.dlang.orgに、dubで使用出来るパッケージの一覧があります。vibe.dや、derelictなどの名前が見られます。 前回の…

【D言語】D言語のビルドツール兼パッケージマネージャ、dub

D言語のパッケージマネージャ兼ビルドツールであるところのdubが便利なので、導入しつつ軽く使ってみます。 Windowsの場合 ここに、インストーラがあります。 Ubuntuの場合 ここにLinux用のバイナリがあります。D-APTからでもインストールできます。 OS Xの…

【D言語】無名再帰してみる

無名再帰と言えば不動点コンビネータですね。 D言語だと、定義のとおりに不動点コンビネータを書けます。 R delegate(Args) fix(R, Args...)(R delegate(R delegate(Args), Args) f) { return (Args args) => f(fix(f), args); } ラムダ構文があるので、少し…

【D言語】dmd 2.063.2がリリース!【dmd】

dmdのリリースサイクルが変わっていたようで、dmd 2.063.2がリリースされています。 http://dlang.org/download.html 2.063.1との変更点は、主に大きいバグ修正です。新しい機能などは含まれていません。 とりあえず、アップデートしておくといいですね。 担…

D言語の入門記事:d-manual

今、@k3_kaimuさんを中心に、D言語の入門記事である、d-manualが作られています! https://github.com/k3kaimu/d-manual/blob/master/readme.md まだ製作途中なので、「D言語の入門記事を書きたい!!」という方は是非Pull Requestを送ってみてください。 担…

【D言語】__traits(getUnittests)の追加【dmd】

unittestを取得する、__traits(getUnittests)が追加されました。 取得したunittestは呼び出すこともできます。 module hoge; import std.stdio; unittest { "test".writeln(); } void main() { __traits(getUnitTests, mixin(__MODULE__))[0](); // このモジ…

【D言語】関数とテンプレート関数のオーバーロード【dmd】

非テンプレート関数とテンプレート関数のオーバーロードが可能になりました。 今までは、 import std.stdio; string hoge(T)(T t) if(!is(T == int)) { return "template"; } string hoge(int i) { return "function"; } void main() { 12.0.hoge().writeln(…

【D言語】LDCをビルドする

Ubuntu 13.04環境でLDCをビルドしてみました。 LDCは、フロントエンドにdmd、バックエンドにLLVMを使う、D言語のコンパイラです。 まず、必要なものを用意します。 $ sudo apt-get install llvm g++ git cmake libconfig++9 libconfig++-dev ソースコードを…

【D言語】パッケージのインポート【dmd】

パッケージを、モジュールとしてインポートする機能が追加されました。

【D言語】dmd v2.063がリリース【dmd】

dmd v2.063がリリースされました! 主な変更点を挙げていきます。

【D言語】PhobosにPull Requestを投げてみた【Phobos】

ふと、

【D言語】構造体の比較の挙動

構造体を比較する際、今までは、opEqualsが定義されていなければビット比較されていました。 ですが、ビット比較だと、

【D言語】なぜInputRangeをin引数で受け取れないのか

const教信者の方などは、すべての引数にinを付けたくなるかと思います。 が、引数にInputRangeを取る場合、それができません。 正確に言うと、出来ますが、InputRangeのはずなのに、InputRangeのように使えません。

【D言語】local importとUFCS

local importでもUFCSが動くようになりました!!

【D言語】関数内テンプレート

関数内テンプレートが書けるようになりました!!

【D言語】Uniform tuple syntaxについて【DIP32】

DIPに、Uniform tuple syntaxなる提案があります。

D言語勉強会「Dの日」やりました!!

Health 2.0 Fukushima Chapter/Medical × Security Hackathon 2013の中の一つのイベントとして、D言語勉強会「Dの日」を開催しました!!

【D言語】assert(false)について

基本的に、-releaseでコンパイルすると、assert式は消えます。 が、assert(false)やassert(0)など、コンパイル時に絶対に失敗するとわかるassertは、-releaseを付けても消えません。

【D言語】__MODULE__と__FUNCTION__と__PRETTY_FUNCTION__の追加【dmd】

MODULEとFUNCTIONとPRETTY_FUNCTIONが追加されました。

【D言語】T[]からT*への暗黙キャストが無くなる【dmd】

無くなりました。 むしろ、今まで出来てたほうが不思議です。

【D言語】「-main」の追加【dmd】

rdmdにはすでに --main がありましたが、 dmdにも -main なるコンパイラスイッチが導入されました。

【D言語】is式のUnusedが不要に!【dmd】

今までは、パターンマッチのあるis式は

【D言語】CTFEのclassを実行時に持ち越すPullReq

今のところ、

【D言語】名前空間を実現する

D言語を使ってると、C++の名前空間のようなものが欲しくなる時があります。 D言語に名前空間なる仕様はありませんが、それっぽいことを実現する方法はいくつかあります。

【D言語】std.jsonが使いづらい【Phobos】

先日、仕事でD言語を書いたのですが、ちょっとstd.jsonが使いづらくて困りました。

【D言語】std.traits.Unqualについて【Phobos】

前回の記事に書いた通り、const(const(int))みたいなのは全部 const(int) immutable(int) shared(int) shared(const(int)) のどれかに収まります。 で、現状のstd.traits.Unqualは