開発環境
- OS X Mavericks - Apple (OS)
- Dart Editor (開発環境)
- Dartium | Dart/ Structured web apps (ブラウザ, Dart VM 用 (Chromium with the Dart VM))
- Safari (ブラウザ, JavaScript 用)
- Dart (プログラミング言語)
Real World Haskell―実戦で学ぶ関数型言語プログラミング(Bryan O'Sullivan (著)、 John Goerzen (著)、 Don Stewart (著)、山下 伸夫 (翻訳)、伊東 勝利 (翻訳)、株式会社タイムインターメディア (翻訳)、オライリージャパン)の4章(関数プログラミング)、4.6(ループをどのように考えるか)、4.6.9(左畳み込み、遅延性、スペースリーク)、練習問題 4.をDartで考えてみる。
その他参考書籍
- What is Dart? [Kindle版] (O'Reilly Media) Kathy Walrath Seth Ladd (著) このブログでの感想
練習問題 4.
コード
sample.dart
import 'dart:html'; void main(){ run.onClick.listen((MouseEvent event){ for(List sequence in sequences){ pre.text += '$sequence\n${concat(sequence)}\n'; } }); clear.onClick.listen((MouseEvent event) => pre.text = ''); } ButtonElement run = querySelector('#run_dart'); ButtonElement clear = querySelector('#clear'); PreElement pre = querySelector('#pre0'); List concat(List<List> sequences){ return sequences.fold([], (List previous, List sequence){ previous.addAll(sequence); return previous; }); } List<List> sequences = [[], [[]], [[1, 2]], [[1, 2], [3, 4]]];
最後の[[1, 2], [3, 4]]の結果から、DartのList classのfoldは左畳み込みみたい。
0 コメント:
コメントを投稿