このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

2015-01-01から1年間の記事一覧

C++コンパイラの状況

// newfeaturs.cpp #include "stdafx.h" // MSC用 // 静的アサート static_assert(sizeof(unsigned short int) == 2, "ushort must have size 2."); // ヌルポインタ void *p = nullptr; // 自動型付け auto a = 0.5f; decltype(a) b = a; auto auto_func(in…

WindowsのUnicode事情

だいぶ前からOS内部は完全にUnicode化されている。 OSの内部コードはUTF-816リトルエンディアンらしい(https://ja.wikipedia.org/wiki/UTF-16) 表面的にはシフトJISも使われている。ユーザーからはシフトJISが見えている。 Unicode文字をワイド文字と呼ぶ…

両モナドのアイレンベルク/ムーア構成

双代数と双モノイド - 檜山正幸のキマイラ飼育記 両モナドのアイレンベルク/ムーア構成 - 檜山正幸のキマイラ飼育記

ολ計算:レコード演算

x, yがレコード、n, mが名前のとき、 x >>+ y は、左優先のマージ x + x +++ y は、排他的公平なマージ、エラーの可能性あり !x は、xのレイフィケーション、結果はインスタンスである。フィールドの型が値ロールで解釈される。 x.n でフィールドを参照でき…

ολ計算:名前管理

名前管理の単位をモジュールとパッケージと呼ぶ。 名前空間が単一のファイルに対応するとき、モジュールと呼ぶ。 名前空間が単一のディレクトリに対応するとき、パッケージと呼ぶ。 パッケージはレコードインスタンスであり、フィールド名はファイル名で、フ…

ολ計算

オミクロン・ラムダ計算というものを考える。目的は、 名前管理をちゃんとする。 名前や項の解釈に柔軟性を持たせる。 十分な表現力を持ち、かつ出来るだけ単純なデータ構造を導入する。 いくらでも高階の存在物を扱えるようにする。 そのためには、 例外を…

レコードによる構造記述 その2

型ヒントという概念を導入する。型ヒントは Hint{name1: typeList1, ..., nameN: typeListN} という形。 型ヒントを使って、termの型を推論する。 ここのtermは、「レコードterm=レコードインスタンス」であってよい。 型コンテキストは、型ヒントの特殊な…

物理的モジュール

Coq

Coqの物理的なモジュールの実体は.voファイル。コンパイルしたオブジェクトファイル。オブジェクトファイルの検索パスはロードバスと呼ばれる。表示は: Print LoadPath.

レコードによる構造記述

基本概念はレコード型とレコードインスタンスとレコードのアプライだけでなんとかなるのでは? レコード型は、{name1 : type1; ..., nameN : typeN; } の形 レコードインスタンスは、{name1 := val1; ...; nameN := valN; } の形 未割り当て型宣言と値割り当…

タスクの事例

mschedはもともとmeeting scheduleで、issueトラッカーとかタスクマネージャの話。最近の例として、ミーティングスケジュールと同様だが: 日時の候補を合意する。 その日時で場所を予約する。 場所を確定する。 その旨を連絡する。 場所の予約が失敗のとき…

グラフィックスの操作

現在のデバイス状態: dev.list() 新しいデバイスを開く: png(filename = "file.png") 詳しくは help(png) など。 カレントデバイスを知る: dev.cur() デバイスを閉じる: dev.off(番号) デバイスは番号で識別されるリングだと思って、dev.next(), dev.pre…

Maximaの新バージョンCLips版

http://maxima.sourceforge.net/download.html から辿って、現在の最新版 maxima-clisp-5.37.3.exe を落とした。以前のバージョン5.36はSBCLを使ったが、CLisp版しかない。インストーラーはカスタマイズできなくて、お任せするしかない。c:/ProgramData/Micr…

推測モデルの幾何構造

情報幾何は分布の空間の幾何構造を使うようだが、線形回帰やその一般化でも結局は幾何構造を使う気がする。Dをなんらかの集合(構造を持つかも知れない)、Wをベクトル空間とする。正確にはWより前にアフィン空間Aがあり、Wはその同伴ベクトル空間。Fun(D, W…

標準化、観測データの標準分解

やっと多少は納得がいった。記述統計でも、実に難しい。要点は: 観測シーケンスの空間はベクトル空間ではなくてアフィン空間。 観測のアフィン空間に付随するベクトル空間はユークリッド空間。直交性、ノルム、角度の概念を持つ。 アフィン空間もベクトル空…

関手の絵算

Title: Frobenius Morphisms of Bicategories Authors: John Bourke and Micah Blake McCurdy URL: http://web.science.mq.edu.au/~mmccurdy/glob.pdf これはいい解説なのだけど、記号法が独特 0-セル 英字小文字 a, b, c、エリア 1-セル ギリシャ文字小文字…

加群の一般化

モナド・トランスポンダーという名前を使おうかと思っていたが、 トランスポンダー - 檜山正幸のキマイラ飼育記 メモ編 モナド・トランスポンダー:動機 - 檜山正幸のキマイラ飼育記 メモ編 やめた。加群概念の拡張だから、 プロ加群 プロト加群 ウル加群 ヘ…

.Primitive vs. .Internal

.Primitiveは名前のとおり、もっともプリミティブで、引数で指定された名前のC関数へのポインタを意味する。R側ではもちろん生ポインタは扱えないので、対応するラッパ関数オブジェクトを返す。プリミティブ関数の関数ボディはCコードだが、便宜上、.Primiti…

他言語呼び出し

.C 古い .Fortran 古い .Call 標準的 .External 可変引数可能 .Internal 内部用 可変引数可能、自由度が高い。 .Primitive 内部用 名前だけ指定、最終的にここに行き着く。

ヒンズ論文から

絵算に直す例題に使うつもり。p3, 4 :p.5 :

search(), searchpaths(), path.packages() の関係

> search() [1] ".GlobalEnv" "package:stats" "package:graphics" "package:grDevices" [5] "package:utils" "package:datasets" "package:methods" "Autoloads" [9] "package:base" > searchpaths() [1] ".GlobalEnv" [2] "C:/Installed/R/R-3.2.2/library…

inherits

x instanceof y の代わりに、inherits(x, "y" ) が使える。

path.expand

"~"の展開とかに使える。Windoesショートネームの展開にも使えるかも。

dir()とlist.files()とfile.*()

dir()とlist.files()はたぶん同じ機能。あと、lis.dirs(), list.files() が揃っている。ファイルシステム関係は、file.*() のようだ。 > file.[TAB][TAB]file.access file.append file.choose file.copy file.create file.edit file.exists file.info file.l…

ライブラリロケーションとインストールされたパッケージ群

ライブラリロケーションは、.libPaths()関数が管理している。この関数固有の内部変数.lib.locを持っていて、そこにディレクトリ文字列のリストが保存されている。 処理系の初期化時に、デフォルトディレクトリ R.home("library") を .Library変数にセットす…

CRANミラーサーバーのリストとパッケージ一覧を得る

> mirr > class(mirr) [1] "data.frame" > names(mirr) [1] "Name" "Country" "City" "URL" "Host" "Maintainer" [7] "OK" "CountryCode" "Comment" > fix(mirr) >次は保存されているCSV表示。 > mirr csv(file.path(R.home("doc"), "CRAN_mirrors.csv")) > …

何でもリネーム可能

> 平方根 > 平方根(2) [1] 1.414214 >

プライベート関数の呼び出し

スコープ演算子:::を使う。 > utils:::.readPkgDesc(.Library, "Version") [,1] [,2] [,3] [1,] "animation" "C:/Installed/R/R-3.2.2/library" "2.4" [2,] "assertthat" "C:/Installed/R/R-3.2.2/library" "0.1" [3,] "base" "C:/Installed/R/R-3.2.2/libra…

関数をプライベートにする方法

ドットで始まる名前を使う: 安直 内部関数: 関数のフレーム内で定義する。完全に隠れる。コンパイルされてないと遅い気がする。 パッケージのプライベート: 面倒。 自分専用のスコープを準備する: そのスコープ内に定義すれば普通では見えない。.libPath…

いくつかのGUI

install.packages() (引数なし)でGUIが出る。fix()やedit()、show.file()もGUIを出す。helpもGUIと言っていいかも。

パッケージ所属関数のスコープ(解決)

パッケージ所属関数の親スコープは通常のパッケージの名前空間。名前空間からのサーチパスはグローバル環境に向かっている。グローバル環境より先のサーチパスは、パッケージの関数には無意味、あるいは有害だと思える。スコープチェーンは、グローバル環境…