タグ

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

  • まともな型クラス への入門: 関数型とオブジェクト指向の垣根を越えて - 檜山正幸のキマイラ飼育記 (はてなBlog)

    2016年9月に次の記事を書きました。 関数型プログラミングとオブジェクト指向について、何か書く、かも タイトルからして引き続く記事を予告しているのですが、その予告を実行することができませんでした。タイトル中の「何か」とは「型クラス」のことです。上記の記事の最後の部分は: 関数型プログラミングにもオブジェクト指向にも関係があって、今後重要度を増すであろう「型クラス」ですが、今述べた(愚痴った)ような事情で(あと、C++のコンセプトは宙ぶらりんだし)、説明の方針も題材も定まりません。でも、いつか、何か書く、かも。 今回この記事で、予備知識をあまり仮定しないで型クラスの説明をします。言いたいことの1/3くらいは書きました。1/3でも長い記事なので、ぼちぼちと読んでもらえれば、と。書き残したことは最後に触れます。いつか、1年はたたないうちに(苦笑)、続きを書くつもりです。 内容: Haskell

    まともな型クラス への入門: 関数型とオブジェクト指向の垣根を越えて - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 奥野幹也『理論から学ぶデータベース実践入門』はどこがダメなのか - 檜山正幸のキマイラ飼育記 (はてなBlog)

    言い訳から始めます。この記事を(途中まででも)読んだ人は、次のように言いたくなるでしょう。 『理論から学ぶデータベース実践入門』は良いなのか悪いなのか、いったいどっちなんだよ?! このは間違いや説明不足があり、誤読されやすい表現も多く、その点では残念なです。しかし、面白いアイディア、するどい観察も含まれていて、行間を補い深読みすれば、多くの示唆を得られるでもあります。 よって、「良い/悪い」の二択では答えられません。良い点と悪い点の両方を、できるだけ客観的に記述するしかないのです。それをした結果、長い記事となりました。 内容: ことの発端: zhanponさんの批判 奥野擁護と奥野批判 僕の擁護・批判の方針 zhanponさんの指摘の再検討 1. 論理的な矛盾とデータの不整合を混同している 2. 命題論理の限界についての説明がおかしい 3. 古典論理の定義を間違えている 4.

    奥野幹也『理論から学ぶデータベース実践入門』はどこがダメなのか - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 記法バイアスと記法独立な把握: 順序随伴を例として - 檜山正幸のキマイラ飼育記 (はてなBlog)

    記法とは、読み書きの約束ごとです。視覚的媒体(紙、画面など)を通じたコミュニケーションには記法が必須です。広く合意・共有された記法が存在するので、我々は円滑なコミュニケーションを行えています。 一方で、特定の記法は人の発想や思考に強い制約を課します。記法が認知や理解の範囲を狭めて限定しているとも言えます。特にテキスト記法は、組版技術からの制約があって、柔軟性・自由度が乏しいために、我々の認知・理解の能力を押さえ込んでいるように思えます。伝統的・常識的記法のくびきから開放されれば、別な景色が見えるかも知れません。 記事タイトルの「記法バイアスと記法独立な把握」については、最後の節で説明します。実例に興味がない方は、最初の2節のあとに最後の節に飛んでもいいです。 内容: 語彙、文法、記法 テキスト記法と絵図記法 順序随伴と単位・余単位 絵図を描けばこんな感じ 図式順記法 格上げと縦書き不等式

    記法バイアスと記法独立な把握: 順序随伴を例として - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • イプシロン-デルタ論法はなぜ難しいのか? どうしたら分かるのか? 分かる必要があるのか? - 檜山正幸のキマイラ飼育記 (はてなBlog)

    先週末に、N君が「イプシロン-デルタ論法って、なんすかアレ? 全然分からないっす!」と言ってました。そのときはそれ以上話す時間もなかったし、次回会うときはこの話題を忘れてしまうかも知れないので、書き記しておきます。 僕は、伝統的なイプシロン-デルタ論法そのものには懐疑的です*1。ゴタゴタした不等式をいじり回すのは早々に切り上げて、開集合を導入したほうがいいと思います。そんな思いから、出来るだけ不等式を使わずに集合族に注目するスタイルでイプシロン-デルタ論法を紹介します。 内容: イプシロン-デルタ論法 時間や運動のイメージを捨て去る ユークリッド距離と開球体 扱う関数達と実例 平面から平面への写像 一点の周辺を記述する開球体の族 写像による開球体の像 デュエルゲームとしての連続性 論理式で書き下そう 再びイプシロン-デルタ論法 続編: 距離空間と位相空間と連続写像 イプシロン-デルタ論法

    イプシロン-デルタ論法はなぜ難しいのか? どうしたら分かるのか? 分かる必要があるのか? - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 「フローチャート」騒ぎ、もう少し頭使って考えてみようよ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    割と最近、次の記事がブックマークと注目を集めたようです。 若手プログラマー保存版!フローチャート徹底解説と作成カンニングペーパー 見る前に予想したように、「何言ってんだ!? コイツ」「アホかバカか」的な扱いでしたね。雰囲気としては、「ホメオパシー効いたよ、マジおすすめ」という類の記事への反応と似たようなものです。 ブックマーク: http://b.hatena.ne.jp/entry/it-koala.com/flowchart-2241 上記「フローチャート徹底解説」記事は、特段に酷いとは思いませんが、かといってたいして役立ちそうにないし、反感を買いそうな記述もある*1ので、記事を擁護する気はありません。しかし、フローチャート自体は強く擁護してきたので、ここでまたフローチャート擁護論を展開すべきかな、… と思わなくもないですが、あんまり乗り気じゃない -- 言いたいことは過去にほぼ書き尽

    「フローチャート」騒ぎ、もう少し頭使って考えてみようよ - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 入門的ではない型クラスの話:Haskellの型クラスがぁ (´^`;) - 檜山正幸のキマイラ飼育記 (はてなBlog)

    タイトルに「入門的ではない」と入れたのは; 先日の「関数型プログラミングとオブジェクト指向について、何か書く、かも」において、「型クラス入門」の記事を書くかもと予告じみたことを言ってしまったので、その入門じゃないぞ、と。でも、型クラスの話だぞ、と。そういう意味合いです。ヨロシク、アシカラズ。 型クラスの元祖はHaskellです。なので、「型クラス = Haskellの型クラス」という前提での解説が多いみたいです。しかし、元祖は“最初の試み”であるがゆえに、使用経験や後発の理論を活かすことが出来ず、むしろ問題をかかえていたりします。Haskellの型クラスも、なんだか残念なところが。 内容: オーバーロードと人生 型クラスは何がうれしいのか(オーバーロードなしでも) 型クラスの実際 記号の乱用の実装法 Haskellの型クラスは何がマズイのか オーバーロードと人生 型クラス誕生の動機は、演算

    入門的ではない型クラスの話:Haskellの型クラスがぁ (´^`;) - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 関数型プログラミングとオブジェクト指向について、何か書く、かも - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「「関数型プログラミングはオブジェクト指向の正当な後継」なの?」を書いていて次のようなことを思いました: テクノロジーに関する思索を語るのは推奨されるべき事だと思いますが、ベーシックな知識に裏打ちされてないと、解釈困難で意味不明になりがちです。せっかくの経験や思いがうまく伝わらないことになります。 知識は大切だな、とは思っているので、ちょっと気になりそうなトピックに関して、ベーシックな知識の入り口を解説する記事を書いてきました。 モナド 入門 → 世界で一番か二番くらいにやさしい「モナド入門」 (2006年) 圏論 入門 → はじめての圏論 その第1歩:しりとりの圏 (2006年) 継続 入門 → CPS(継続渡し方式)変換をJavaScriptで説明してみるべ、ナーニ、たいしたことねーべよ (2008年) メタクラス・レイフィケーション 入門 → いまさらながらだけど、オブジェクトとクラ

    関数型プログラミングとオブジェクト指向について、何か書く、かも - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 無料で入手できる本格的(紙なら高額)な理数系専門書15選 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    インターネットで資料探しをしていると、出版されている書籍と同じ内容のPDFがゴロンと置いてあってビックリすることがあります。以下に挙げるのは、そのような、“出版物と同等な内容”が無料公開されている理数系専門書のリストです。 紙のとまったく同じものもありますし、ドラフト原稿が公開されているものもあります。紙のの出版後もメンテナンスされていて、インターネット版のほうがより新しくより充実していることもあります。 例えば"Monoidal Functors, Species and Hopf Algebras"は、ハードカバーは735ページで、現時点で24,650円もする大部な書籍です。公開されているPDFは書籍より増量して836ページあり、誰でも無料ダウンロード可能です。 著作権があやしいものは除外し、著者人または著者の所属組織のWebサイト、あるいはarXiv.orgで公開されているも

    無料で入手できる本格的(紙なら高額)な理数系専門書15選 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 圏論学習ソフト FQL++ 入門 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「関手データモデル/圏論データベース: その後の発展と現状 (2016)」 にて: FQL IDEがサポートする4つの言語のなかで、位置付けがハッキリしないカワイソウなFQL++ですが、「圏論の学習にはとても有用」という特徴があります。これだけを切り出して圏論学習ツールにして欲しいくらいです。FQL++に関しては、いずれ別な記事で語りたいと思っています。 FQL++について語ります。2013年の記事「圏と関手をできるだけ簡単に書き下す方法」の内容を、FQL++で書いてみます。 内容: FQL IDEのインストールと実行 圏を記述してみる FQL++の構文 無限圏の扱い 関手の記述 FQL++と圏論 FQL IDEのインストールと実行 FQL IDEは、http://categoricaldata.net/fql.html からダウンロードできます。Javaのjarファイルfql.jarと、

    圏論学習ソフト FQL++ 入門 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 「確率変数」と言うのはやめよう - 檜山正幸のキマイラ飼育記 (はてなBlog)

    カーク・スターツ(Kirk Sturtz)という人が、なにやら圏論ベースの確率論をやっています。スターツのarXiv論文リストをたどって、アブストラクトと第1節を拾い読みしてみると、「『確率変数』という言葉は使わない」という記述がありました*1。 なるほど。共感・同意します。 謎すぎた「確率変数」 僕が確率を嫌がっていた理由のひとつは、この「確率変数」という言葉の尋常じゃない謎さかげんです。まったく意味不明で、やる気を失いました。 僕、普通の確率論なーんにも知らんわ。高校の教科書に確率もあったのですが、「確率変数」の定義があまりに意味不明で、それ以来毛嫌いしているのでした。 かなりシッカリした内容の教科書でも、「確率変数とは、値がハッキリとは決めることができない変数です」みたいな“定義”から始まります。 「確率変数」を使わないなら何と呼べばいいのか? 「可測写像」です。可測写像を定義するに

    「確率変数」と言うのはやめよう - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 統計の基本中の基本をハッキリさせる - 檜山正幸のキマイラ飼育記 (はてなBlog)

    R言語をインストールしたはいいけど、全然使えないです。Rが、プログラミング言語としてどういうものか?おおよその見当は付きますが、Rの用途は統計。統計処理をしないとあまり意味がない。だけど統計を知らないのでお手上げ。 統計の入り口は、データ整理をする記述統計という分野です。記述統計では確率も母集団も出てきません。このレベルでもよく分かんない。入門書を見ると、事例があるだけで用語・概念の定義がないんですよ。教育的配慮としては妥当かと思うんですが、気持ち悪い。なので、想像(「たぶんこうだろう」)を織り交ぜて基概念を解釈してみます。教育的配慮はありません。 変数とデータ データシーケンスからデータフレームへ 変量の値の集合 分布と密度 ヒストグラム グラフィックス以前 変数とデータ いきなり「2変数のデータ」とか言われても、「はぁー、ソレなんですか?」と困惑します。 統計の「変数」とは関数のこと

    統計の基本中の基本をハッキリさせる - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • gulp問題ひきずり:ウォッチがまたおバカ過ぎる - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「最近のビルドツールって何なの?」において、gulpは「腕力はあるが知性を持たない」、ゴレライ的というかゴライアス的というか…、そんなツールだと述べました。二、三、後から思ったことがあるので追加します。 内容: プロジェクトは肥大しちゃうことがある ウォッチをいちいち手で書くのかよー OMakeと比較してみる ウォッチはこうでなきゃ じゃ、OMakeがいいのか? プロジェクトは肥大しちゃうことがある 「そもそも大した事はしないのでシンプルなツールgulpでも十分」ということなら、「そうですよね」と同意して話はオシマイです。でもね、gulpを使うプロジェクトが、ほんとに小さくて簡単なものなんでしょうか。 目の前に、10種のプログラミング言語が混じった2000ファイルのソースコード群がいきなり与えられたとき、「よしっ、gulpを使おう」とはならないと思うのですが、小さなプロジェクトが(良くも悪

    gulp問題ひきずり:ウォッチがまたおバカ過ぎる - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 最近のビルドツールって何なの? - 檜山正幸のキマイラ飼育記 (はてなBlog)

    TypeScriptでは、コンパイルが必要です。プログラムをブラウザーとNode.jsの両方で使おうとすると、さらに加工が必要です。ミニファイだの文書も作るだのすると、ちょっとしたビルドプロセスとなるので手作業では辛くなります。 今更Makeでもないよなー、と思い、最近のビルドツールを試してみました。 内容: 流行りすたりが激しすぎる gulpを使ってみる:こんなサンプル gulpのビルドスクリプト タスクランナーってのはビルドツールとは違うのか? ビルドツールは進化したのか 参考資料: 例題のファイルとコマンドの一覧 ソースファイル 追加の話: gulp問題ひきずり:ウォッチがまたおバカ過ぎる 流行りすたりが激しすぎる 「確かGruntってツールがあったよな」と、インストールと使い方を調べていると、やたらにgulpって単語が目立つんですよね。Gruntのライバルの新興勢力らしいです。 「

    最近のビルドツールって何なの? - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 中学レベル代入計算からカリー/ハワード流証明の圏へ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    Coqをいじっていると、カリー/ハワード対応の威力を実感します。一方で、証明といえども所詮は計算なんだな、とも思います。中学校くらいでやる代入計算の直接的な延長線上に証明の合成操作があるんですよね。中学レベルの計算と形式的証明では、用語や記号がまったく違うのですが、そこにうまく通路を作ってやると、やってることは大差ないことが分かります。 「寄り道Coq: exactタクティクと型理論と圏論」の最後の節「大きなラムダ式/小さなラムダ式」で述べたことの敷衍です。 内容: 1次式の代入計算 代入の圏 代入をシーケントで表す 型判断を成分とする代入 カリー/ハワード対応による再解釈 Coqにおける実例 まとめと展望 1次式の代入計算 話を簡単にするために、式としては1次式だけを考えます。1次式による計算結果を変数に代入することを次の形で書きます。 v := 2x + 3y - 1 連立の場合もあり

    中学レベル代入計算からカリー/ハワード流証明の圏へ - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • オートマトンの定義を書き換えてみる - 檜山正幸のキマイラ飼育記 (はてなBlog)

    オートマトンとラベル付き遷移系(labeled transition system)はほとんど同じものです。ここでは区別せずに遷移系全般をひっくるめて「オートマトン」と呼ぶことにします。オートマトンによりモデル化できることは多いですが、目的によっては通常の定義では使いにくいこともあります。そこで、オートマトンの定義をより使いやすい形に書き換えてみます。 結局のところ、「オートマトンとは関手です」ってオチになるのですが、これでは漠然としすぎているので、もう少し手でいじれる形も提供します。「形式言語理論のための代数」で述べた行列としての解釈とはどう関係するのか?は、また別の機会に述べるつもりです。 内容: オートマトンの定義(普通のやつ) 普通の定義はどのへんが痒いのか 関手オートマトン 色々なオートマトン 圏を有向グラフに変えても十分 始状態の扱い オートマトンの直和 アルファベットのケイリ

    オートマトンの定義を書き換えてみる - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • Web上で発生する膨大な量の不愉快と困惑 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    とあるフォームを入力したときのエラーメッセージ。 契約者名 姓(フリガナ)は全角カナで入力してください。 契約者名 名(フリガナ)は全角カナで入力してください。 お客様番号をご利用されているご住所の番地号 小字は全角で入力してください。 お客様番号をご利用されているご住所の番地号 番地は全角で入力してください。 お客様番号をご利用されているご住所のフロア・部屋番号は全角で入力してください。 フリガナに関してはひらがなを使ってしまった。番地などの数字は、僕は常にアスキーコードのほうが入るように仮名漢字変換(IME)を設定している。それでエラー … って納得いかない! 僕個人でも、こういう事態にしょっちゅう出会う。Web全体では、このての不愉快と困惑の総量は膨大なものだろう。毎回「なんで?」と思うわけだが、実際なんでこういうエラーを出すのかが分からない。理由があるのだろうか、単に悪しき習慣が固

    Web上で発生する膨大な量の不愉快と困惑 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • シェルのリダイレクトを「こわいものなし」というくらい完全に理解しよう - 檜山正幸のキマイラ飼育記 (はてなBlog)

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

    シェルのリダイレクトを「こわいものなし」というくらい完全に理解しよう - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • えっ、僕のエントリーが関係してた? んじゃ … - 檜山正幸のキマイラ飼育記 (はてなBlog)

    hirataraさんのエントリー「"圏論とかモナドなんて簡単だからscalaを使って説明してみた"を検証してみた」は読んでました。そこから辿って、もとのエントリー「圏論とかモナドなんて簡単だからscalaを使って説明してみた」もザッと目は通しました。で、特別に何かを言いたくなるような感じはしませんでしたね。 hirataraさんは、過度に批判的にならないように注意深く書いていて: 先ほど「圏とは言い難い」という表現をしたのだけど、これは「関数1つからなる圏も考えられる」という事実を考慮してのことだ。 mapとflatMapが分かれば実用上問題がないというのはその通りで、それ以上圏や関手、モナドについて踏み込んで厳密に理解する必要はないと言える。「圏論とかモナドなんて不要だからscalaにおける要点だけ説明してみた」ってことあれば全く同意である 僕も、scalamapとflatMapに対す

    えっ、僕のエントリーが関係してた? んじゃ … - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 多品種少量データとMongoDB - 檜山正幸のキマイラ飼育記 (はてなBlog)

    MongoDBは、よく知られているように、ジョインもトランザクションもサポートしてません。これは確かに不便なこともありますが、欠点・弱点というよりは、最初からそのように設計されているもので、ひとつの設計判断です。パフォーマンス、スケーラビリティ、耐障害性、分散化の容易性などをより重要視した結果でしょう。 MongoDBの特徴を見ると、大規模なデータセットを高速にハンドリングするためにチューンされているように思えます。しかし、それとは違った場面で使える機能性も備えています。それは「ユニオン型を自由に扱える」ということなんですが、地味であまり言及されないし、ちょっと分かりにくいところもあります。でも、この特徴は、僕にとっては嬉しいものです。ちょっと説明してみます。 ジョインとユニオン SQLDBはジョインができます。ジョインとは、“直積”と“等式的条件による絞り込み”の組み合わせです*1。等式

    多品種少量データとMongoDB - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • スピヴァックの圏論教科書 Category theory for scientists - 檜山正幸のキマイラ飼育記 (はてなBlog)

    関手データモデルのデイヴィッド・スピヴァックが、圏論の教科書を書いたようです。商業出版ではなくて、Web上にPDFが公開されています。スピヴァックの大学での講義のテキストとして書かれたようです。 Title: Category theory for scientists Author: David I. Spivak Submitted: 27 Feb 2013 URL: http://arxiv.org/abs/1302.6946 This book attempts to show that category theory can be applied throughout the sciences as a framework for modeling observed phenomena and for communicating results. In order to targ

    スピヴァックの圏論教科書 Category theory for scientists - 檜山正幸のキマイラ飼育記 (はてなBlog)