blog.monophile.net

Takaaki Yamamoto

東京工業大学において計算機科学と応用数学を学び、情報科学芸術大学院大学[IAMAS]においてメディア表現を専攻し修了。 現在は digitiminimi Inc. において、インフラエンジニアとして生計をたててている。 また、計算を主題に制作を行い、現代音楽作品や公共インスタレーション作品など技術提供を行う。 三輪眞弘に師事する。

List

Dartでリストを連結する

いきさつ

最近、Dartでプログラミングを良くしているのですが、 補完が利いて結構気持ちよくプログラミングできてます。 ブラウザを使ってちょこっとビジュアル的な使い方もできますし、 コマンドラインアプリも書けるって結構楽しいです。 さらに言語特有のイベントループの機構 ( https://www.dartlang.org/articles/event-loop/ ) もあってユーザインターフェースは書きやすいです。 プログラミング言語の設計に関してうるさい人達にはDartの仕様が微妙に感じるらしいですが、 エディタとブラウザを含めた開発環境としての質は結構高いように思います。 つまりDartの良さは仕様を見てもわからなくて、書かないと実感できないと思います。

昔の読み書きそろばんが現代においてHTML/CSSとプログラミングならば、 全てを一つの開発環境で実行でき、 さらにマルチプラットフォーム(Mac/Linux/Windows)であることを考えると、 現時点において一番教育用途に適しているんではないかな。

Dartでリストを連結する

さて、リストの連結をDartで書いてみました。 foldという関数型言語によくある関数を使って書くと気持ち良い感じがします。

void main() {
  List<List<String>> ls = [["hoge"], ["foo"], ["bar", "piyo"]];
  var ret = ls.fold(new List<String>()
                    ,(acc, item) => acc..addAll(item));
  print("ls :${ls}");
  print("ret:${ret}");
}

下が実行結果。

ls :[[hoge], [foo], [bar, piyo]]
ret:[hoge, foo, bar, piyo]