2008-02-01から1ヶ月間の記事一覧
昨日作ったJavascriptの内包表記のインターフェースを一新しました。 listC関数の引数に要素を渡すスタイルをやめて、配列の要素に式を直接書くスタイルに変更。 (内包表記的にみて)より見た目が直観的になったと思います。 まぁそれでも言語仕様の制限上…
追記 ※仕様を変更しました。 JavaScriptで内包表記、Newバージョン haskellやErlangにあるようなリスト内包表記を理解する為にも、 また便利っぽいのでJavaScriptでも使えるよう実装してみる事にした。 実装前に検索をかけてみると既にそういう事やってる人…
JavaScriptでリスト内包表記のような事をやってみたい。 その為にまずデカルト積をとる為の処理を作成してみる。 デカルト積って? デカルト積とは直積とも呼ばれ英語ではproduct Cartesian product というようだ。 例えば[1,2,3]という集合と [4,5,6] とい…
気になったとこだけメモしておきます。 P.112 - 7.5配列〜 toStringとvalueOfとjoinの関係 ここは意外な発見があった。 通常は配列に var ary = [1,2,3,4,5]; ary.join(); ary.toString(); ary.valueOf(); とすると全て同じ結果が返ってくる。 カンマ区切り…
Kanasan.jsにはCodeReadingと読書会、合わせて6回目の参加となるのだが、 一つだけ個人的な問題があって、私のPCだけ何故かネットワークに繋がらない。。。 最初の3回くらいまでは普通に繋がってたんだけどね。 前回、前々回とかは他にも何人か繋がらない…
Kanasan.JS JavaScript第5版読書会#3
せっかくWEBサーバを立ち上げたので過去に作ったものを晒していく事にする。 HttpFileExplorer 1年半ほど前にAjaxでエクスプローラーライクなファイラーを作ろうと思って、 途中まで作りかけて放置されていたもの。 一応、ファイル共有の為の基本的な機能は…
プログラムを声に出して読むときの記号の読み方で、 比較的、読みにくそうなものだけを挙げてみた。 リファレンス的に全部載せてるとこは結構あるが、 全部を見ると改めて覚えようとしないだろうから、 読めない人の為に新たにこれだけ覚えようって意味もこ…
自ドメインのnanoflops.netをイメージして作ったアイコン。 がんばって見ればひらがなで「なの」って書かれているように見える?
javaで実装していたSchemeが動くようになったので、 とりあえず公開してみる事にした。 WEBアプリケーション化したのですぐに試せます。 名前は『JNanoScheme』とする事にしました。 動作デモは以下から JNanoScheme デフォルトでフィボナッチ数列を計算する…
javascriptでのソートアルゴリズムの実装を 友人がやっていてちょっと面白そうなので自分もやってみた。 // マージソート (function marge_sort(ary) { function marge(x , y) { if(!x.length) return y; if(!y.length) return x; return (x[0] < y[0]) ? [x…
パーサの実装 パーサ難しすぎ! 今の力じゃまだ上手く書けそうにありません。誰かのソース見てみようか。 いや、でもせっかくここまで自力で来たし。。。 なのでとりあえず穴だらけの簡易実装をしてみた。 処理順はこんな感じ。 入力されたソースを正規表現…
リストのevalの実装 後回しにしていたConsクラスのevalを実装する。 public class Cons implements List { public SymbolExp eval(Context ctx) { Function func = (Function)this.car().eval(ctx); List args = (List)this.cdr(); if (!(func instanceof Sp…
リストの実装 ここは結構、肝となる部分かな。 素直に実装するならConsセルクラスを作って、carとcdrプロパティを持たせて、 セル同士を繋いでいくという実装になるだろう。 つまりリストアルゴリズムの自力実装なわけだけど、問題点があって、 評価器の実行…
そろそろ評価部分の作りこみをするので先にJavaの例外を定義しとこう。 Schemeの実行フェイズは 読み込み 字句解析 評価 に大別でき、あとはこれの繰り返し処理となる。 例外処理はフェイズ単位でよさそうなので以下の例外を定義。 public class IOException…
リアクションのしようがない。。。