前回のエントリーで JavaScript の話が出たので、以前から JavaScript でやってみたかったことを試してみた。それは、JavaScript をコマンドラインで実行することだ。
Googleで調べて、SpiderMonkey というC言語で書かれた JavaScript エンジンと、Rhino という java で書かれたJavaScriptエンジンがあったが、インストールが簡単なので、Rhinoをインストールすることにした。 Rhinoのインストール方法だが、Windows の場合、サイトからダウンロードした .zip ファイルを、C:\以下に解凍するだけだった。Ubuntuでは、synaptic からインストールできる。 Windows のコマンドプロンプトで、 >java -jar C:\rhino1_7R2\js.jar とすると、js> のプロンプトが表示され、JavaScript コマンドラインから実行することができる。print 文もあるので出力をターミナルに表示することができる。 js> print("hello, world"); hello, world JavaScript の標準の map 関数を調べたが、map 関数は自分で定義しなくてはならないらしい。しかし JavaScript では、関数もファーストオーダーオブジェクトなので高階関数の定義が非常に簡単にできる。 js> function map(fn, ary) { > var a = []; > for(var i = 0; i < ary.length; i++) a.push(fn(ary[i])); > return a; > } 引数の二乗を返す関数 square を定義して、map 関数の引数にしてやると、配列の要素が二乗される。 js> function square(x) { return x * x; } js> map(square, [1, 2, 3, 4, 5]) 1,4,9,16,25 map 関数を使って星印のピラミッドを作る方法は次のようになる。 js> map((function (x){ return Array(x+1).join("*")}), [1,2,3,4,5]).join("\n") * ** *** **** ***** これで、リスト処理の関数と、高階関数と、関数の合成でコンパクトに記述する方法が、Haskell に特異的なものではなく、Ruby でも JavaScript でも記述できる普遍的なものであることが分かった。 Haskell のプログラムの記述法がどんなに奇異に見えても、単に慣れの問題なのだと言えるだろう。 *Rhinoは java で書かれた JavaScript エンジンで、Java のクラスを JavaScript から利用することができる。JavaScript で簡単に GUI プログラムも作ることができる。Java のプログラム経験のあるひとには面白いツールではないだろうか。残念ながら、管理人は java がわからないのでメリットが生かせない。 今日の Haskell Hugs> :l System.Time System.Time> do {c <- getClockTime; print c} Sat Dec 10 07:15:29 東京 (標準時) 2010
by tnomura9
| 2010-12-09 18:50
| Haskell
|
Comments(0)
|
カテゴリ
新型コロナウイルス 主インデックス Haskell 記事リスト 圏論記事リスト 考えるということのリスト 考えるということ ラッセルのパラドックス Haskell Prelude Ocaml ボーカロイド 圏論 jQuery デモ HTML Python ツールボックス XAMPP Ruby ubuntu WordPress 脳の話 話のネタ リンク 幸福論 キリスト教 心の話 メモ 電子カルテ Dojo JavaScript C# NetWalker ed と sed HTML Raspberry Pi C 言語 命題論理 以前の記事
最新のトラックバック
最新のコメント
ファン
記事ランキング
ブログジャンル
画像一覧
|
ファン申請 |
||