開発環境
- 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(左畳み込み、遅延性、スペースリーク)、練習問題 3.をDartで考えてみる。
その他参考書籍
- What is Dart? [Kindle版] (O'Reilly Media) Kathy Walrath Seth Ladd (著) このブログでの感想
練習問題 3.
コード
sample.dart
import 'dart:html'; void main(){ input_int.onKeyUp.listen((KeyboardEvent event){ try{ int n = string2int(input_int.value); pre.text = 'next number: ${n + 1}\n'; } catch (e) { pre.text = '$e\n'; } }); input_int.onFocus.listen((var event) => input_int.select()); } InputElement input_int = querySelector('#input_int'); PreElement pre = querySelector('#pre0'); int string2int(String s){ int pm = s.startsWith('-') ? -1 : 1; if(pm == -1){ s = s.substring(1); } if(s.isEmpty){ throw 'empty'; } var pattern = new RegExp(r'\D'); print(pattern.firstMatch(s)); Match matches = pattern.firstMatch(s); print(matches); if(matches == null){ return pm * int.parse(s); } throw 'not-digit \'${matches.group(0)}\''; }
0 コメント:
コメントを投稿