タグ

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

  • シェルのリダイレクトを「こわいものなし」というくらい完全に理解しよう - 檜山正幸のキマイラ飼育記 (はてなBlog)

    Java BlockingQueueで遊ぶ:パイプラインごっこ」でパイプラインの話をしたので、来の、つまりUnixのパイプやリダイレクトを少し調べてみました。 たまに話題となる some-command >file 2>&1 と some-command 2>&1 >fileの挙動の違いについて、「シェルはコマンドラインリダイレクトの指定を右から左に解釈実行する」なんて説明が見つかりました。んなバカな! パージングは左から右にするものですよ。パーズツリーを逆順にたどることはできるけど、そんなことする必然性はなんにもないよ。 次の記事を読むと、「右から左」なんて事情じゃないことが分かるでしょう。 UNIXの部屋 検索: リダイレクト シェルのリダイレクトにまつわる失敗 さてここでは、複雑なリダイレクト処理も完全に理解できる処方箋を示しましょう。例えば、次のコマンドラインが何をするか分かる

    シェルのリダイレクトを「こわいものなし」というくらい完全に理解しよう - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • はじめての圏論 その第1歩:しりとりの圏 - 檜山正幸のキマイラ飼育記

    全体目次: 第1歩:しりとりの圏 (このエントリー) 第2歩:行列の圏 第3歩:極端な圏達 第4歩:部分圏 第5歩:変換キューの圏 第6歩:有限変換キューと半圏 第7歩:アミダの圏 第8歩:順序集合の埋め込み表現 第9歩:基に戻って、圏論感覚を養うハナシとか 付録/番外など: 中間付録A:絵を描いてみた 番外:同期/非同期の結合 中間付録B:アミダとブレイド 番外:米田の補題に向けてのオシャベリ 一部のプログラミング言語の背景として、圏論(カテゴリー論)が使われたりするせいか、以前に比べれば多少は圏論に興味を持つ人が増えたような気がしなくもないような。でも、安直な入門的文書はあまり見かけないですね。もちろん、シッカリした教科書や論説はあるんですが、どうもシッカリし過ぎているような。例えば、圏の例として「コンパクト・ハウスドルフ空間と連続写像の圏」とか言われてもねぇ(この例はいい例なんです

    はじめての圏論 その第1歩:しりとりの圏 - 檜山正幸のキマイラ飼育記
  • JavaScriptで言語処理系の勉強をしましょう:構文解析準備編 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    次の2つの記事の続き; JavaScriptで実装したごく簡単な仮想機械RAC0(Rudimentary Arithmetic Calculator Level-0)に対して、高級言語とその処理系を作りましょう、というシリーズです。 JavaScriptで仮想機械の勉強をしましょう JavaScriptで言語処理系の勉強をしましょう:字句解析編 トークンスキャナーが出来たので、次はパーザーを作る番です。実際のパーザー(構文解析器)の例を示す前に、方針と方法について説明しておきます。 内容: ソースコードとトークン列 パーザーと構文木 BNFによる文法記述 再帰降下(下降)法 ソースコードとトークン列 高級言語のソースコード(今回の例では、1 + 2, (5 - 2)*4 のような算術式です)は、なんらかのテキストストリームから言語処理系に入力されます。ファイル、キーボード、文字列データなど

    JavaScriptで言語処理系の勉強をしましょう:構文解析準備編 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • Rhinoに基本ディレクトリコマンドを実装する - 檜山正幸のキマイラ飼育記 (はてなBlog)

    ErlangのEShellでは、pwd(), cd(Dir), ls() という3つの基的なディレクトリコマンドが備わっています。単純な機能しか持っていませんが、ないよりはずっとましです。 Javaで実装された対話的JavaScript処理系Rhinoには、ディレクトリコマンドがありません。Erlangのpwd(), cd(Dir), ls()と同等の関数を書くことにしました。 pwdコマンド Javaでカレントディレクトリ(の名前文字列)を得るには次の方法があります。 System.getProperty("user.dir"); (new File(".")).getCanonicalPath(); Rhinoでも、どちらの方法も使えます。 まずは一番目の方法; Rhinoでは、システムプロパティの値が大域変数(値はオブジェクト)environmentに入っているので、次のようにすれ

    Rhinoに基本ディレクトリコマンドを実装する - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • CPS(継続渡し方式)変換をJavaScriptで説明してみるべ、ナーニ、たいしたことねーべよ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    久々にThe n-Category Cafeを見たら、Mike Stayによる"The Continuation Passing Transform and the Yoneda Embedding"なんて記事がありました。 米田埋め込みは圏論ではお馴染み。継続渡しへの変換はコンピュータ・プログラミングではお馴染み。 この2つは、実は同じものなんだよ。なんで、誰もこのことを言わないんだろうね? The Yoneda embedding is familiar in category theory. The continuation passing transform is familiar in computer programming. They're the same thing! Why doesn't anyone ever say so? Mike Stayのこの記事、面白いのだ

    CPS(継続渡し方式)変換をJavaScriptで説明してみるべ、ナーニ、たいしたことねーべよ - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 檜山正幸のキマイラ飼育記 - 世界で一番か二番くらいにやさしい「モナド入門」

    気まぐれと偶然となりゆきで、ここ2,3回はモナドを話題にしました。googleで「モナド」を引いてザッと眺めると、「モナドはむずかしいー」とか「モナドで挫折した」みたいな雰囲気が感じられて、説明芸人の血が少し騒ぎましたね。「なら、予備知識ゼロでモナドの説明をしてやろうじゃねーか」と。 タイトルはだいぶ煽っちゃった…… けど、ハッタリじゃないつもり…… けど、実際はどうかな? ※印刷のときはサイドバーが消えます。 内容: とりあえず、あたりさわりなくモナドの来歴を紹介する こんな課題を考えてみよう:副作用付き計算 カウントアップする関数達 カウントアップしたい意志を戻り値で伝える それでは、いったい誰がカウントアップをするのだ 関数の引数の型をCountup型にまで拡張する そして、これがモナドだ とりあえず、あたりさわりなくモナドの来歴を紹介する 今からここで説明する「モナド(monad)

    檜山正幸のキマイラ飼育記 - 世界で一番か二番くらいにやさしい「モナド入門」
  • 1