タグ

ブックマーク / m-hiyama.hatenablog.com (7)

  • 檜山正幸のキマイラ飼育記 - JavaScriptで学ぶ・プログラマのためのラムダ計算

    JavaScriptによるテンプレート・モナド、すっげー簡単!」にて: 紙と鉛筆でラムダ計算を実行できることは必要だな、やっぱり。 なんて強調したので、ラムダ計算の入門、いってみよう。 [追記]練習問題集を追加しました。説明を読みながら、あるいは読んだ後で是非やってみてください。→「JavaScriptで学ぶ・プログラマのためのラムダ計算 問題集」[/追記] ※印刷のときはサイドバーが消えます。 内容: JavaScriptの関数リテラル ラムダ式ってなんだ ラムダ計算の体系と適用操作 ラムダ式の例をいくつか β変換 -- ラムダ計算のキモ! β変換を何度か実行してみる 中間まとめ、まだ続きがあるよ JavaScriptの関数リテラル 最初に、JavaScriptに関する知識を確認しておきましょう。なお、JavaScriptの対話的実行環境については「もっともお手軽な対話的JavaScr

    檜山正幸のキマイラ飼育記 - JavaScriptで学ぶ・プログラマのためのラムダ計算
  • Graphvizでイコール風(二重線)の辺を描くには - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「名前 = 式」といった形式を図示したい。このとき、イコールを連想させる二重線で「名前」と「式」を結びたかったのです。Graphvizで描画しようとして、いろいろ試したのですがイコール(二重線)が描けませんでした。 今日、Kuwataさんに教わったのですが、なんと(!)辺の色指定を使うとのこと。辺のcolor属性に "black:white:black" と指定すると、三層のストライプ模様ができて、結果的にイコール風の辺となります。 しかしさ、太い辺を描くのに色指定を使うってのはトリッキー過ぎるだろ>Graphviz、そんなん気が付かねーよ。

    keyesberry
    keyesberry 2013/05/13
    へぇ〜
  • JavaScriptに近いラムダ計算系 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    机上のラムダ計算で何か考えてみて、それを動かしたいときはJavaScriptに翻訳する、という方法を僕はよく採用します。ラムダ計算は理論的にスッキリしていて扱いやすい計算体系です。が、そのままでは実行できません(そのままの実行系もあるでしょうが一般的ではない)。ラムダ計算とJavaScriptの構文はけっこう似ているので、翻訳は割と楽にできます。そのへんのところは「JavaScriptで学ぶ・プログラマのためのラムダ計算」を参照してください。 さて、ラムダ計算といっても色々な種類の計算体系があります。ラムダ計算の形式性や厳密性を壊さない範囲で、JavaScriptへの翻訳ができるだけ簡単になるようなラムダ計算を考えてみましょう。 型と基データ ラムダ計算に型が付いていても、今のJavaScriptは型の定義や型アノテーションができないので、「型なし」の計算となります。とはいえ、純粋な型な

    JavaScriptに近いラムダ計算系 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 衝撃的なデータベース理論・関手的データモデル 入門 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    デイヴィッド・スピヴァックによる衝撃的なデータベース理論である関手的データモデル。どうしたらうまく説明できるか? と色々と悩んでしまいますが、まー、書けるところから書き始めてしまいましょう。 さー、いらっしゃい、いらっしゃい。関手的データモデルの世界へようこそ。圏論の言葉は出てきますが、圏論の予備知識はほぼゼロでOKですよ。 [追記 date="翌日"]取り急ぎ勢いで書きましたので、不注意と早とちりが混じっていました。追記と取り消し線の形で訂正と注記を足しました。字句レベルの表現の変更は直接編集しています。 あとそれと、圏論の基用語を知りたいときはコチラ、… って、……、ゴメン![/追記] 内容: はじめに の購入のサンプル スキーマのグラフ表現 キーとか計算カラムとか 圏としてのスキーマ 関手としてのデータベース状態 テーブルの変化 自然変換としてのデータ操作 データベースに圏論が使

    衝撃的なデータベース理論・関手的データモデル 入門 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • JavaScriptの関数には、やたらに何でも突っ込める - 檜山正幸のキマイラ飼育記 (はてなBlog)

    jQueryのドル記号「$」は、理不尽なくらいに大活躍します。あまりにも何でもできるので、「ありゃ何なんだ?」と思いますよね。$(...) という形で呼び出せるので、関数なのは確かです。JavaScriptでは、ひとつの関数名に対して呆れるくらいにオーバーロード(多義的定義)ができます。 内容: コンストラクタあるいはクラスとしての関数 メソッドとしての関数 名前空間あるいはモジュールとしての関数 関数/オブジェクトとしての関数 試してみる コンストラクタあるいはクラスとしての関数 関数は、オブジェクトのコンストラクタとして使用できます。 function Point(x_, y_) { this.x = x_ || 0; this.y = y_ || 0; } お尻にアンダースコアが付いた引数名 x_, y_ は省略可能のつもりです。new Point()、new Point(2)、ne

    JavaScriptの関数には、やたらに何でも突っ込める - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 有向グラフを表現するデータ形式について - 檜山正幸のキマイラ飼育記 (はてなBlog)

    今年の4月に、「すごいグラフ処理ライブラリNetworkXの使い方」という記事を書きました。メモ編にもいくつかNetworkX関係のメモが残っています。 https://m-hiyama-memo.hatenablog.jp/search?q=networkX NetworkXとGraphVizの組み合わせは、グラフの操作・解析・描画に便利なんですが、グラフを表現するデータ形式が色々あって頭がこんがらかる時があります。実装に依存しない一般論を一回整理しておいたほうがいいようです。ライブラリ固有のネイティブ形式ではなくて、JSONで表現できるデータ形式の話をします。 例題は次のようなグラフだとします。 頂点(ノード)は、a, b, c, d, e の5つがある。 辺は次の4: a → b b → c c → a c → d 内容: 単純な有向グラフ dict-of-lists形式 頂点/辺

    有向グラフを表現するデータ形式について - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 檜山正幸のキマイラ飼育記 - プログラマのためのJavaScript (0)

    ジジイの手習いで、JavaScriptを勉強中でございます。その動機は「結局、ブラウザベースRIAかよ」のようなこと。非ブラウザベースのリッチクライアントへの期待を失ってしまったんですね。短期的・現実的な策としては、Ajax的な手法によるRIAなのかなぁ、という気分。ただし、「短期的」が“1年”と“5年”ではえらい違いです。今のところ僕には、「短期的」の実際の期間はわかりません。 僕のJavaScript調査の結果は、「初心者でも使えてプログラマでも困惑するJavaScript 」などに書きました。これらの続きとして、「プログラマのためのJavaScript (*)」というタイトルで書こうかと予定してます。あくまで予定、気まぐれでモノグサな僕のことだから、…… “プログラマのための”というのは、C, C++, Java, C#など“普通の”プログラミング言語にある程度慣れていることを前提に

    檜山正幸のキマイラ飼育記 - プログラマのためのJavaScript (0)
  • 1