タグ

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

  • Unicodeの記号文字についてもう少し - 檜山正幸のキマイラ飼育記 (はてなBlog)

    昨日の記事「数学記号とか特殊な文字のUnicode」で、Unicodeの記号文字をリストしました。気になる点や追加情報を書きます。 論理否定記号の文字は2種類あります。 U+00AC 'NOT SIGN' U+FFE2 'FULLWIDTH NOT SIGN' 半角文字と全角文字です。Unicodeの来の思想「全世界の文字を統合(unify)する」からすると、半角・全角も統合して重複は避けたかったでしょうが、諸般の事情から半角・全角を残さざるを得なかったのでしょう。 以前、否定記号が2種類あることがトラブルの原因だったことがあります(ココラの話)。半角・全角で重複している文字は、コード範囲FF00-FFEFの"Halfwidth and Fullwidth Forms"ブロックに集められています。 http://unicode.org/charts/PDF/UFF00.pdf 見渡したと

    Unicodeの記号文字についてもう少し - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • JavaScriptで説明するオーバーロード解決 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    型クラスの話をしました。 入門的ではない型クラスの話:Haskellの型クラスがぁ (´^`;) オーバーロードは何故にかくも難しいのか:Haskellの成功と失敗 Haskellの型クラスに関わるワークアラウンド Haskellの型クラスは元祖・型クラス*1なんですが、なんか残念な仕様です。整合性が歪んでいる理由は、オーバーロード機能を優先しているからです。その分、構造としての型を記述する機能は犠牲になっています。トレードオフだから仕方ないけど。 ところで、オーバーロードの解決(多義性の解決)って、どうやるんでしょうか? そのメカニズムをJavaScriptのサンプルコードを使って説明します。 なお、「多相とオーバーロードはどう違うか」とかの話は、どうでもいい割に議論すると消耗してバカバカしいので一切触れません。(ちなみに、「並列と並行の違い」なんて議論も時間の無駄。暇つぶし以上の意味は

    JavaScriptで説明するオーバーロード解決 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • もうGitは怖くない: 自信を持って使いたいあなたへ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    2014初頭に書いた「WindowsにおけるGit利用環境は整った: Git for Windows と SourceTree for Windows」の最後の文: ブランチは、Gitのなかで最も重要でありながら最も分かりにくい概念でしょう。表面的な言葉に騙されず、先入観を持たず、SourceTreeの視覚的表示(樹形図)の力を借りながら学習するのが、理解への一番の近道です。 そんへんの詳しいことはまたの機会に述べるかも知れません。 1年半以上たってしまいましたが、「またの機会」がやって来ましたよ。ええ、Gitの説明をします、ブランチを中心に詳しく。 「基礎編」と「ブランチ編」で2回に分けようかと思ったけど、長大な記事として一挙公開。これからGitを使う人が対象ではありません。Gitが何をやっているのか、自分が何をやっているのかイマイチ自信が持てない方向けです。 ブランチやマージって、なん

    もうGitは怖くない: 自信を持って使いたいあなたへ - 檜山正幸のキマイラ飼育記 (はてなBlog)
    hikazoh
    hikazoh 2015/12/13
  • お手軽で実用的なジェネリックスへの道は遠い - 檜山正幸のキマイラ飼育記 (はてなBlog)

    TypeScriptジェネリックス:可能性が見えると不満がつのる」において、クラス定義や関数定義に型パラメータを渡せるだけでは、ジェネリック・プログラミングは難しいと述べました。そのときの例題はリストの総和だったのですが、より簡単な累乗(ベキ乗、power)計算を例にしてもう一度問題点を説明します。C++のジェネリックスについても触れ、比較してみます。 内容: TypeScriptの痒いジェネリックス さすがC++、だが型パラメータ制約が書けない 帯に短しタスキに長しな現状 TypeScriptの痒いジェネリックス 次は通常のTypeScriptコードです*1。特に問題なくコンパイル・実行できます。 type T = number; function power(x: T, n: number) : T { var result: T = 1; for (var i: number =

    お手軽で実用的なジェネリックスへの道は遠い - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • R言語メタプログラミングの基礎 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    Rはメタプログラミングの能力を持っていますが、情報がまとまってなくて苦労します。けっこう落とし穴もあります。基的な事項をここにまとめておきます。 内容: 関数オブジェクトの基構造 関数オブジェクトのコンストラクタ ペアリストと仮引数リスト 空な名前とデフォルト値なし コールオブジェクトと関数体 関数の評価環境 関数の登録先環境 コールオブジェクトの操作 引数の式をコールオブジェクトとして取得する その他のメタプログラミング・ツール メタプログラミングのサンプル R言語メタプログラミングの基礎:補足 関数オブジェクトの基構造 ユーザーが定義した関数をデータとして見ると、3つの部位(スロット、メンバー)を持つ構造体と考えることができます。3つの部位とは、仮引数リスト(formal parameter list)、体(body)、環境(environment)です。その要点を次の表にま

    R言語メタプログラミングの基礎 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • TypeScriptと関手やモナドなど - 檜山正幸のキマイラ飼育記 (はてなBlog)

    2008年に書いた記事「CPS(継続渡し方式)変換をJavaScriptで説明してみるべ、ナーニ、たいしたことねーべよ」はCPSの説明にJavaScriptを使っています。しかし、JavaScriptでは型宣言や型総称(ジェネリックス)が使えないので、「未来のJavaScript」という最初の節で架空のJavaScript方言を定義しました。最近のAltJSのなかには、当時の「架空のJavaScript方言」の機能を実現したものがあります。そのなかでも、TypeScritは強力な型システムを持っています。2015年に現存するJavaScript風言語であるTypeScriptで、関手やモナドがうまく書けるかどうか探ってみます。 内容: 圏論とプログラミング言語 TypeScriptの型の書き方 お題はリストモナド モナドの乗法と単位、全体のまとまり 追記: TypeScriptに関する補足

    TypeScriptと関手やモナドなど - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • WindowsへのOCamlのインストール - 檜山正幸のキマイラ飼育記 (はてなBlog)

    Coqと一緒にOCamlもあったほうがいいのかな、と。インストールするだけで終わるかもしんないけど。 http://protz.github.io/ocaml-installer/ から ocaml-4.01.0-i686-mingw64-installer3.exe をダウンロード。これは普通のインストーラーです。 デフォルトでは、OCaml以外に ActiveTcl, emacs, cygwinをインストールしようとします。emacsは既に入っているし、cygwinは要らない。ActiveTclは何の関係があるのだろう? ActiveTcl(バージョン 8.5.14.0)は試しに入れることにしたのですが、ActiveTclのインストールは失敗しました。別にいいや。 で、OCamlだけのインストール。インストール先ディレクトリを$OCamlと書くことにします。 OCamlは簡単に入ったけ

    WindowsへのOCamlのインストール - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 1