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

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

ダメ出し

情報検索

情報検索の機能が低い。find_* とか print_* だけ。小洒落た機能はない。キーワード(コマンド名)に対して、そのコマンドがどのセオリーやどのMLファイルに由来するかも検索できないようだ。ディレクトリ内からファイルを探してソース読むしか無いようだ。s…

出力は死んだテキスト

TTYはダメだ、と言いながらOutputパネルはほぼTTY。そのため: 出力が長いときに、切られる。 出力から文字列を探せない。GUIでよくある「目でgrep」、辛い! 出力がリンクやボタンであればいいのに。例外は thy_deps だが、ショボい。 コピペは出来る。が、…

ウェンツェルの苦難の道

文書指向へと舵を切ったウェンツェルだが、まだまだ全然だし、先は長いし、苦難が予想される。 用語法、メンタルモデルがスクリプト指向のまま。 ウェンツェル自身もfact, goalを多用している。 論理の概念・用語法と、ソフトウェアとしての証明系の用語・文…

探すのが不便

infix operatorの優先度の一覧が欲しいだけど、isabelle infix operator precedence とかでググッてもあんまり分からん。Coqだと、公開されているHTMLマニュアルが引っかかったけど、Isabelleは粒度がでかいPDFだからなーー。[追記] introの"4.1.1 Infix Ann…

文字の扱い

writeln "\<alpha>" とかはアプリケーションレベルでのサポート。よって、#"a" はcharだが、#"\<alpha>" はcharにならない。Poly/MLのUnicodeサポート状況によるが、Unicode文字を文字および文字列に使えるはずだが、ASCII頭で凝り固まっている。</alpha></alpha>

これではダメだ

Standard MLは、標準のパッケージマネージャもインターネット上のモジュールアーカイブサイトも持ってない(モジュールアーカイブとパッケージマネージャ - 檜山正幸のキマイラ飼育記 メモ編)。プログラミング言語にとって、ライブラリやツールは、言語仕様…

Wunderlist バグ

Webクライアントで、完了済みのToDoアイテムの中身が消えてしまう。これで、メモ欄がないので安心したら、消えていただけだったことがある。かなり困る。リロードすると復元するが、リロードのタイミングでだいぶ前のタスクに関する通知が出る。これもバグっ…

Doxygen Markdownのバグ?

間違えやすい仕様も含まれる。 前後に空白なしの `hoge` は認識されないで、生タグ(ttタグ)が見えてしまう。 preブロックへの言語指定 ```hoge が場所によってエラーする 連続するpreブロックがあると、二番目は認識されない。 句点の直後に空白を忘れて自…

越統計量と実効的(構成的)統計量

誰も言わないが、統計量には超越的に定義されるものと、データから構成的に定義されるものがあるように思う。期待値は超越的で、具体的に与えられたデータからの平均値は実効的。極限において、実効的統計量が超越的統計量を近似可能か? という問題意識が不…

いくつかの定義とかトピックとか

『初学者のための統計教室』現代数学社 から: 統計とは、現実の集団に関係する数(って、これが定義かよ?) 例:人口調査、男女、年代などで整理できる。 2歳ごとのヒストグラムが出ていた。 男女の性比=男/女≒1.08、ふーん 母集団の部分集団を標本と呼ぶ…

古典テンソル計算の不十分さ

ある意味驚いた。なんとなく、コンパクト閉圏をベースにした線形代数は古典テンソル計算に翻訳できると思っていたが、表現力が足りなくて無理だった。多圏におけるストリング図をスパイダー図と呼ぶことにする。コンパクト閉圏の図では極性が必要になるので…

お絵描きで古典テンソル計算:下から上だと全てがダイナシ!

次のあたりでかなり記法法を工夫して整合的に仕上げている。 非対称閉圏のカリー化:記号法を工夫すれば、右と左の混乱も解消 - 檜山正幸のキマイラ飼育記 自画自賛:右と左が気持ちよくなった件 - 檜山正幸のキマイラ飼育記 コンパクト閉圏と絵算で理解する…

リライトで何が起きたか?

クリックでリライトが発生することがあるが、何が起きたか分からないことがある。リライトを引き起こすセルを、そのリライトのトリガーセルと呼ぶことにすると、リライトとトリガーセルの関係は分かりにくい。トリガーセルはあくまでトリガーであって、その…

Globularの物凄くイライラするところ

「なにかチョットやってみた」とかのスニペットをブログ・エントリーに貼り付けたり出来ないこと。そもそもソースコードとかスクリプトというものがなくて、ワークスペースのスナップショットを保存出来るだけ。publishすればワークスペースのスナップショッ…

なんでラムダ計算はダメなのか

通常のラムダ計算を0-計算とすると、自然演繹が1-計算で、シーケント計算(の証明)が2-計算だろう。各次元のラムダ計算がバラバラで統合されてないのがダメ。大きなラムダ計算は統合の試みだが、ちゃんとやってないな。デカルト閉圏の構造を写し取るのだか…

必要な言葉がないなら、誰も説明できない

makeに関してしみじみ感じたのは、やはり適切な概念と用語法が欠如していることだ。そのために、正確な事を誰も記述できない状況になっている。 makeが作る(であろう)グラフを依存関係グラフと呼んでいいかあやしい。むしろ実行計画グラフだろう。 ターゲ…

もし改善できるなら(架空)

現実的には何の望みもないが、思考実験として: 組み込みルールを廃止する。 モジュール/ライブラリ機能を入れる。 include のようにして、標準ルールは取り込める。 内部に持っているルールベースをダンプできるようにする。JSON型式とDOT型式。 リソース…

ロクでもないハマリどころ

複数のルールからのレシピが競合すると負けたレシピは消滅する。警告はある。 暗黙の組み込みルールが予期せぬ所で使われる。極めて発見しにくい。-r で対処。[追記].outは組み込みの暗黙ルールにある。ハマった。[/追記] 組み込みルールの利用/非利用を細…

さらにロクでもない仕様が判明

DontCareフラグとしての空レシピは擬似ターゲット(ほんとのPHONYターゲット)では別な挙動を示す。 リソースターゲット(PHONYではないターゲット)では、空レシピはDontCareフラグとして働く。 擬似ターゲット(ほんとのPHONYターゲット)では、空レシピは…

ロクでもない仕様とロクでもないメッセージ:レシピがないとき

[追記]記述が混乱しているから取り消ししておく。[/追記]Makeにとってゴールと認識できない項目(ノード)が初期ゴールまたは前提項目(導出されたゴール)として出現すると: make: *** No rule to make target `XXXXX'. Stop. となる。これはいい。ゴール…

ロクでもない用語法

あまりの酷さに、ほんとにムカムカしてきた。 公式マニュアルでは、ゴールとターゲットが区別されているが、通常は区別されない。ターゲットは構文上の概念。ゴールは実行時の動的概念。違う!! ルール内での役割としてのターゲット(左辺)と、依存関係グ…

ロクでもない変数と代入

単純変数と再帰変数(事実上は関数、あるいはon-demand遅延評価変数)の区別を設けたのはいいが、 X ?= $(warning X defined)foo Y ?= $(warning Y defined)$(X) Z := $(warning Z defined)$(Y) 「?=」は再帰変数になる。「?=」が欲しいのはむしろ単純変数だ…

ほんとにロクでもない

構文に一貫性がない。ツギハギ。 視認しにくいタブを最も重要な記号に使っている。 特別扱いや例外事項が多い。 要するに、短い説明ができなくて、記憶する事が多くなり、勘違いを誘発しやすい。逆は当然に、 一貫性があり統合された単一構文 読み書きが容易…

new.env()のイヤーなデフォルト値(誤解だった)

[追記]これは誤解[/追記] > new.env function (hash = TRUE, parent = parent.frame(), size = 29L) .Internal(new.env(hash, parent, size)) > 関数内で、new.env()すると、親スコープが親フレームになる。これはオカシイだろうよ。.GlobalEnvのparent.fram…

環境とフレームとエンクロージャ、クロージャ

「環境=フレーム+エンクロージャ」ということだが、 フレームは束縛セット(キー/値ベアの集合)であって、あえて言葉を作る必要なんてない。 単数形の束縛(binding)は使っているのだから、binding set とか a set of binding とでも言えば十分。 フレ…

歴史的遺物

Sとの互換性を考慮しているらしい。mode()とtypeof()の二本立てとか。storage.mode()もある。 かつてリストはpairlistの意味で、ベクトル(または新リスト)が今のリストだったようだ。 vectorコンストラクタでリストが作れるのはそんな理由か? これもSとの…

arrayが変だ

class(x) が"arry"と出ても、unclass(x)した後のmodeはベクトルだったりリストだったり。非常に紛らわしい。どうも、arrayは構造的タイピングのような仕掛けで、dimがあるとarrayと解釈するようだ。dimnamesも解釈する。matrixは単に次元が2の配列。これって…

for内の変数

for (i in 1:10) print(i) のiは環境を汚す。なんてこった。対処は: local({ for (i in 1:10) print(i) })

深い代入、永続代入

"ウィッカムは、"The deep assignment arrow, 関数内で

命名法の不統一

関数や変数の命名法がバラバラなのはしょうがないとしても、 > args(data.frame) function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, stringsAsFactors = default.stringsAsFactors()) NULL > args(sapply) function (X, FUN, ..., …