読者です 読者をやめる 読者になる 読者になる

【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 v2.063がリリース【dmd】

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

【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は

【D言語】型修飾子の組み合わせ【const(immutable(T))】

ふと、型修飾子を組み合わせるとどうなるのか気になったので、調べて見ました。

【D言語】mixinでSingletonパターン

mixinするとシングルスレッドなSingletonパターンになるテンプレートを書いて見ました。

【D言語】isPODについて

dmd 2.061がリリースされましたが、isPODがtraitsに追加されました。

【D言語】UDAの記法が変わってた【UDA】

少し見ない間に変わってました。

【D言語】Voldemort Typeについて【名前を呼んではいけないあの型】

D言語erのみなさん、あけましておめでとうございます。 今回は、ニュースグループでよく目にするけれど、日本語の資料は全くないVoldemort Typeについて、語っていきます。 大丈夫です、ハリー・ポッターのヴォルデモートであってます。

【D言語】無名列挙体のメンバを取得したい【enum】

最近、グローバルに定義された無名列挙体のメンバをコンパイル時に取得したいということがありました。 しかし、どうにもうまく行きませんでした・・・

【D言語】dmdのバグ【Issue 9169】

D言語erの皆さん、こんにちは。 今回は、ついこの前、間接的に(?)ぶつかったバグである、Issue 9169を軽く紹介していきます。 あまり関係ないですが、もうバグ報告数が9000を超えたんですね・・・

【D言語】ctpgの演算子たち【ctpg】

D言語erの皆さん、こんにちは。 今回は、D言語の話題に戻って、ctpgの演算子を少し紹介します。

【D言語】forwardについて【std.algorithm】

今回は、std.algorithmに最近追加された、forwardテンプレートについて見ていきます。

【D言語?】ctpgの実装について【ctpg】

D言語erの皆さん、こんにちは。 今回は、D言語で書かれたパーサジェネレータである、ctpgの実装についてちょっと話していきます。

【D言語】-profileで関数の実行時間を計測してみる【dmd】

D言語erの皆さん、こんにちは。 今回は、-profileを使って、関数の実行時間を計測してみます。

【D言語】UDAが登場!!使い方を探ってみる!!

D言語erの皆さん、こんにちは。 今回は、最近になって、なぜかウォルたんによって実装された新たな機能である、UDAの使い方について少し書いていきます。

【D言語】パーサジェネレータライブラリ:ctpg v1.0.0 リリース!

D言語erの皆さん、こんにちは。 タイトルにもある通り、ctpgのv1.0.0をリリースしました。 https://github.com/youkei/ctpg

【D言語】エラーの行数がおかしいバグ【Issue 8825】

D言語erの皆さん、こんちには。 今回は、最近見つけたバグについて語っていきます。

【D言語】任意のコンパイルエラーを出す

D言語erのみなさん、こんにちは。 今回は、D言語で任意のコンパイルエラーを出す方法について語ります。

【D言語】enumを使った配列のコンパイル時定数は遅い?

D言語erの皆さん、こんにちは。 今回は、enumを使った配列のコンパイル時定数の読み取り速度について書いていきます。

【D言語】テンプレートの遅延インスタンス化

D言語erの皆さん、こんにちは。 今回は、テンプレートの遅延インスタンス化について語ります。

【D言語】__LINE__と__FILE__のバグっぽい挙動

coi loi pilno lo dy. zei bangu dmd v2.060は、template引数のデフォルト値で使われるLINEとFILEについてバグっぽい挙動をします。 その辺について語っていきます。

【D言語】文字列mixinと#lineを組み合わせる

D言語を使うと、文字列mixinと#lineが両方そなわり最強に見える とよく聞きます。 今回は、文字列mixinと#lineの組み合わせが、どう最強に見えるか解説します。

【D言語】ForwardRangeのsaveとは何か?

今回は、ForwardRangeのsaveについて解説します。

【D言語】動的配列を引数とする関数のメモ化

今回は、タイトルにある通り、動的配列を引数とする関数のメモ化に関する問題を掘り下げます。

【D言語】MessagePackを使う

今回は、D言語でMessagePackを扱う方法をとても簡単に紹介します。