開発環境
- 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.5(リストを使う)、練習問題 2.をDartで考えてみる。
その他参考書籍
- What is Dart? [Kindle版] (O'Reilly Media) Kathy Walrath Seth Ladd (著) このブログでの感想
練習問題 2.
コード
sample.dart
import 'dart:html';
void main(){
run.onClick.listen((MouseEvent event){
pre.text = window.navigator.userAgent + '\n';
for(List sequence in sequences){
pre.text += '$sequence\n';
pre.text += '${splitWith((int n) => n.isEven, sequence)}\n';
}
});
clear.onClick.listen((MouseEvent event) => pre.text = '');
}
ButtonElement run = querySelector('#run_dart');
ButtonElement clear = querySelector('#clear');
PreElement pre = querySelector('#pre0');
List<List> sequences = [[1, 2, 4],
[1, 2, 4, 5],
[2, 4, 1, 3],
[1, 3, 2, 4, 5, 7],
[2, 4, 1, 3, 6, 8],
[1],
[2],
[]];
List<List> splitWith(bool f(var a), List sequence){
List<List> result = [];
List temp = [];
for(var x in sequence){
if(f(x)){
temp.add(x);
} else {
if(temp.isNotEmpty){
result.add(temp);
temp = [];
}
}
}
if(temp.isNotEmpty){
result.add(temp);
}
return result;
}
0 コメント:
コメントを投稿