Haskell を使ってみて一番嬉しかったのは、プログラムの短さだ。たとえば、フィボナッチ数列の10個を作るのに、要するプログラムは、次のようになる。
Hugs> take 10 fib where fib = 1:1:zipWith (+) fib (tail fib) [1,1,2,3,5,8,13,21,34,55] なんで、プログラムが短いほうがいいかというと、タイポが入り込む確率が少ないことだ。したがって、バグ取りが激減する。バグは、論理の誤りからくるものよりも圧倒的にタイポからくるものが多い。したがって、タイポが減ればバグも激減する。 JavaScriptでも同じことが言える。同じことを短いプログラムで書ければ、バグは激減する。たとえば、次の二つのリストを連想配列に登録することを考えてみよう。 ["apple", "lemon", "grape", "melon", "orange"] ["red", "yellow", "purple", "green", "orange"] これを以前のエントリーで定義した zipWith 関数を用いると次のようになる。 a = []; zipWith(function(x,y){a[x]=y}, ["apple", "lemon", "grape", "melon", "orange"] , ["red", "yellow", "purple", "green", "orange"]) a["apple"] "red" このプログラムは Haskell on JavaScript のページで動作確認できる。直接にa["apple"]="red";... と記述するのは言わずもがな、for ループを使った次のプログラムも、; 忘れや i の前の var を忘れたことによる副作用などの危険がある。 a = []; b = ["apple", "lemon", "grape", "melon", "orange"]; c = ["red", "yellow", "purple", "green", "orange"]; for (var i = 0, i < b.length; i++) { a[b[i]] = c[i]; }; 要するに、短い表現でプログラムを作るためには、汎用性の高い関数の手持ちがあればいいのだ。それに、短いプログラムは直感的にその内容が分かるという可読性の利点もある。 Haskell の関数を JavaScript に導入することが短いプログラム作成の助けになるかどうかは分からないが、次のようなプログラムを見ると、Haskell の発想を JavaScript に導入することは意味のあることではないかという気がする。 map(function(x){return x * x }, seq(1,10)) [1,4,9,16,25,36,49,64,81,100]
by tnomura9
| 2010-12-17 20:16
| JavaScript
|
Comments(0)
|
カテゴリ
新型コロナウイルス 主インデックス Haskell 記事リスト 圏論記事リスト 考えるということのリスト 考えるということ ラッセルのパラドックス Haskell Prelude Ocaml ボーカロイド 圏論 jQuery デモ HTML Python ツールボックス XAMPP Ruby ubuntu WordPress 脳の話 話のネタ リンク 幸福論 キリスト教 心の話 メモ 電子カルテ Dojo JavaScript C# NetWalker ed と sed HTML Raspberry Pi C 言語 命題論理 以前の記事
最新のトラックバック
最新のコメント
ファン
記事ランキング
ブログジャンル
画像一覧
|
ファン申請 |
||