2014年1月29日水曜日

開発環境

Real World Haskell―実戦で学ぶ関数型言語プログラミング(Bryan O'Sullivan (著)、 John Goerzen (著)、 Don Stewart (著)、山下 伸夫 (翻訳)、伊東 勝利 (翻訳)、株式会社タイムインターメディア (翻訳)、オライリージャパン)の4章(関数プログラミング)、4.6(ループをどのように考えるか)、4.6.9(左畳み込み、遅延性、スペースリーク)、練習問題 3.をDartで考えてみる。

その他参考書籍

練習問題 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 コメント:

コメントを投稿