2008-02-01から1ヶ月間の記事一覧

JavaScriptで内包表記、Newバージョン

昨日作ったJavascriptの内包表記のインターフェースを一新しました。 listC関数の引数に要素を渡すスタイルをやめて、配列の要素に式を直接書くスタイルに変更。 (内包表記的にみて)より見た目が直観的になったと思います。 まぁそれでも言語仕様の制限上…

JavaScriptでリスト内包表記を作ってみた

追記 ※仕様を変更しました。 JavaScriptで内包表記、Newバージョン haskellやErlangにあるようなリスト内包表記を理解する為にも、 また便利っぽいのでJavaScriptでも使えるよう実装してみる事にした。 実装前に検索をかけてみると既にそういう事やってる人…

JavaScriptでデカルト積

JavaScriptでリスト内包表記のような事をやってみたい。 その為にまずデカルト積をとる為の処理を作成してみる。 デカルト積って? デカルト積とは直積とも呼ばれ英語ではproduct Cartesian product というようだ。 例えば[1,2,3]という集合と [4,5,6] とい…

Kanasan.JS JavaScript第5版読書会#3 報告

気になったとこだけメモしておきます。 P.112 - 7.5配列〜 toStringとvalueOfとjoinの関係 ここは意外な発見があった。 通常は配列に var ary = [1,2,3,4,5]; ary.join(); ary.toString(); ary.valueOf(); とすると全て同じ結果が返ってくる。 カンマ区切り…

Kanasan.JS JavaScript第5版読書会#3 問題

Kanasan.jsにはCodeReadingと読書会、合わせて6回目の参加となるのだが、 一つだけ個人的な問題があって、私のPCだけ何故かネットワークに繋がらない。。。 最初の3回くらいまでは普通に繋がってたんだけどね。 前回、前々回とかは他にも何人か繋がらない…

Kanasan.JS JavaScript第5版読書会#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…

はじめての処理系実装(Scheme on Java) その6

パーサの実装 パーサ難しすぎ! 今の力じゃまだ上手く書けそうにありません。誰かのソース見てみようか。 いや、でもせっかくここまで自力で来たし。。。 なのでとりあえず穴だらけの簡易実装をしてみた。 処理順はこんな感じ。 入力されたソースを正規表現…

はじめての処理系実装(Scheme on Java) その5

リストの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…

はじめての処理系実装 その3

リストの実装 ここは結構、肝となる部分かな。 素直に実装するならConsセルクラスを作って、carとcdrプロパティを持たせて、 セル同士を繋いでいくという実装になるだろう。 つまりリストアルゴリズムの自力実装なわけだけど、問題点があって、 評価器の実行…

はじめての処理系実装(Scheme on Java) その4

そろそろ評価部分の作りこみをするので先にJavaの例外を定義しとこう。 Schemeの実行フェイズは 読み込み 字句解析 評価 に大別でき、あとはこれの繰り返し処理となる。 例外処理はフェイズ単位でよさそうなので以下の例外を定義。 public class IOException…

やってみた

リアクションのしようがない。。。