1. Python, Haskell のリスト内包表記
Python で、リスト内包表記を使い、リストの要素を2倍する。
>>> [x*2 for x in range(1, 6)] [2, 4, 6, 8, 10]
- cf. 5.1.4. リストの内包表記
Haskell も、リスト内包表記を使える。
Prelude> [x*2 | x <- [1..5]] [2,4,6,8,10]
- cf. 3.11 リスト内包表記
2. JavaScript の配列内包
JavaScript 1.7 でも、上記と同じような 配列内包 を使える。
Firefox で Firefox ボタン > Web 開発 > スクラッチパッドを起動し、以下を実行。(cf. Tools - MDN)
[x*2 for each (x in [1,2,3,4,5])] /* 2,4,6,8,10 */
ただし、配列内包を使えるブラウザは限られている。
JavaScript tests, compatibility tables and examples
- JavaScript - Wikipedia
- JavaScript - Wikipedia, the free encyclopedia
- Comparison of web browsers - Wikipedia, the free encyclopedia
for each の each を忘れると、結果が異なる。
[x*2 for (x in [1,2,3,4,5])]/* 0,2,4,6,8 */
これは、配列の添え字を取り出しているからかな。
JavaScript の配列内包が、Python のリスト内包表記に似ているのは、Python から取り入れられたため。
According to wikipedia, JavaScript 1.7 implements ECMAScript "Edition 3 plus all JavaScript 1.6 enhancements, plus Pythonic generators and array comprehensions ([a*a for (a in iter)]), block scope with let, destructuring assignment (var [a,b]=[1,2])". So these features are not part of ECMAScript.
Google Chrome には、いつ取り入れられるのかな?
- InfoQ: Google Chromeで次のJavaScriptをプレビュー
- JavaScript shogun deflects Google's mid-air Dart attack [printer-friendly] • The Register
0コメント:
コメントを投稿