プログラミング

漢字データベースを使って漢字ベン図を作問する

漢字ベン図は、QuizKnockがやっていた漢字クイズです。条件が3つ与えられるので、複数の条件に当てはまる漢字を答えていきます。 www.youtube.com この記事では、漢字情報データベース Mojidata を活用して、漢字ベン図を作問してみようと思います。 github.…

簡単関係照会言語 Erq で快適なデータベース分析生活を送る

Erq(アーク)は、SQLの代わりにアドホックなデータ分析に用いることを主目的とした、新しいデータベース言語です。リレーショナルデータベースは便利ですが、アドホックなデータ分析を行う上で、SQLの文法は面倒なものです。Erqは、SQLのセマンティクスは極…

漢字処理に使うデータベース・関連サイトまとめ

Unicode Character Database www.unicode.org Ideographic Variation Database unicode.org Adobe-Japan1 github.com MJ文字情報一覧表 mojikiban.ipa.go.jp 漢字データベース kanji-database.sourceforge.net GlyphWiki glyphwiki.org 萌典 www.moedict.tw

TopShell: シェル再考

GitHubのExplore repositoriesにたまたま表示されていた TopShell が気になったので、ここで紹介する。 github.com TopShell開発の動機は TopShell: Reimagined Terminal and Shell · topshell-language/topshell Wiki · GitHub に書いてあるが、要点をまと…

位置の外延的表現・内包的表現の区別と考察ノート

オブジェクトの位置の表現方法には、大きく分けて2種類ある。ここではそれを、外延的表現と内包的表現と呼びわけ、ボードゲームの駒の位置の表現を具体例にして、どのような違いがあるかを考えてみる。 今、将棋盤上においてある、王将の位置を表したい。ど…

昔作ったリポジトリがフォークされていた話

昔、SQLiteをWebAssembly向けにビルドする例をGitHubに置いていたんだけど、 github.com 先月ごろフォークされて Uno.sqlite-wasm というリポジトリができていた。 github.com Unoは、UWPアプリをiOSやAndroid, WebAssembly上で動かすプラットフォームらしい…

Phantom property pattern

TypeScriptは、JavaScriptエンジンの動的セマンティクス上に、静的な型システムのセマンティクスが重なっているものです。ここで、JavaScriptとしては正しく実行できても、TypeScriptの型システム上ではちゃんと型が付かないという場合もあります。ときには…

「What Is Functional Programming? に対する反論」を読んで考えたこと

lyrical-logical.hatenablog.com読んでいて引っかかった部分について考えました。 mutable変数は「入力とは呼べない」? この記事で僕が伝えたいのは、君が書くあらゆる関数には二組の入力と二組の出力があるってことだ。 間違いなく、InboxQueue の状態はこ…

プログラムを哲学する 2. 「概念記法」

以前、言語の完全性について言及した。今回は引き続き、言語の完全性について考える。mandel59.hateblo.jp フレーゲの「概念記法」 フレーゲは未定義の式の存在を「言語の不完全性」(einer Unvollkommenheit der Sprache)とみなしていた。論理学者のフレー…

文脈付き構成的意味論を構成的意味論に変換する

mandel59.hateblo.jpここでは, 自然数の集合 に0を含めることとする。記法 は を表す。 の時は を表す。 記法 は を表す。 の時は (真理値の真)を表す。 形式言語 形式言語 は関手集合 , 関手の項数 からなる組である。 式 形式言語 の式集合 を, つぎの帰…

プログラム意味論の分かりやすい紹介

巷に膾炙しているプログラム意味論の説明は、正直言って何を言っているのか、部外者にはよく分からないように感じられる。プログラムの意味を論じる「プログラム意味論」の意味がよくわからないというのは本末転倒だろう。ここでは、プログラム意味論を分か…

プログラミングと哲学

プログラミングと哲学の間には深い関係がある。プログラミングが昔ながらの哲学と単純に対応するというわけではないけれども、だからといって全くの無関係というわけでもない。その理由として、プログラミングの方法論のひとつに、世界を分析し、それを記述…

Referential Transparencyの代わりに使える概念案

Referential Transparencyという概念が指すものは漠然としているので、もっと意味が明瞭で使いやすい用語を定義し、色々な言語の性質を記述してみる。前提として 式は原子式か複合式である。 複合式は関手(functor)と項(argument)から構成される。 〈純…

Referential Transparencyについて取り急ぎ

Wikipedia日本語版に 参照透過性(さんしょうとうかせい、英: Referential transparency)は、計算機言語の概念の一種で、文脈によらず式の値はその構成要素(例えば変数や関数)によってのみ定まるということを言う。 https://ja.wikipedia.org/w/index.php…

プログラミングにおける〈式〉の考察 まとめ

mandel59.hateblo.jp mandel59.hateblo.jp

RustでFizzBuzz まとめ

Rust 0.1 (2012-01-26) プログラミング言語 Rust - M59の記録 Rust 0.4 (2012-11-16) Rust 0.4 - Ryusei’s Notes (a.k.a. M59のブログ) Rust 0.7 (2013-07-06) Rust 0.7 - Ryusei’s Notes (a.k.a. M59のブログ) Rust 0.9 (2014-01-15) Rust 0.9 - Ryusei’s N…

Rust StableでFizzBuzz

前回: RustでFizzBuzz - Ryusei’s Notes (a.k.a. M59のブログ)安定版がリリースされてからは特段試してなかったことに気づいたので、今更ながら安定版で動くFizzBuzzを載せておく。 fn main() { use std::thread::spawn; use std::sync::mpsc::channel; use …

プログラミング言語は自然言語と本質から異なるのか

わたしは小説家になる以前、8年間ほどプログラマーとして働いていまして、こういう思考を始めると止まらないところがあります。コンピューター言語と小説の言語、自然言語は違うのか、という質問はよくされるのですが、これは本質的に異なります。プログラミ…

〈式〉の考察 2

その1 ⇒ プログラミングにおける〈式〉についての考察 - Ryusei’s Notes (a.k.a. M59のブログ)前回、式の望ましい性質として確定性・構成性・純粋性があるという話をした。これらの性質がなぜ望ましいのかを、実際に式を分析しながら詳しく見ていく。 式の構…

プログラミングにおける〈式〉についての考察

「プログラムとは何か」という質問に対する、最も素朴な回答は「プログラムとは、機械に与える命令文の並びのことです」というものだ。命令文を解釈する機械が、プログラムに記された命令に従って、装置を制御し、計算処理を実行する。このようなことは、情…

Everybody Loves Somebody

述語論理に限定継続を追加して、everybodyやsomebodyを表す項を作ってみる。以下、 はそれぞれ shift0, reset0 とする。同時に複数使うと、引数を右から評価するか左から評価するかで継続が異なるため、結果が一意にならず、英語の表現と同様に曖昧になる。…

RDFa Liteのここが酷い

RDFa LiteはRDFa Coreのサブセットで、とても短い仕様なのだけれども、一点気に入らない。なぜ、@aboutではなく@resourceを採用したのか。RDFa 1.1 Primerによれば、@aboutと@resourceの違いは、同じ要素に@propertyが設定されている場合の意味の差だけだ。…

schema.org/URLってダメ

(Poor schema.org/URL - Ryusei’s Notes (a.k.a. M59のブログ)の雑な日本語訳。というか、原文が雑な英語すぎるし、まとまってない。)schema.org/URL というデータ型が定義されているんだけど、これって酷いよね。「この属性のデータ型って何?」「URL。」…

Poor schema.org/URL

schema.org/URL is one of data types defined for linked data. I hate it, because it is totally useless. “Hey, what is the data type of this attribute?” “URL.” That is nonsense.An URL is just an identifier. That is URL, I know. Almost every …

ソースコードは基本設計図か

www.nikkei.com用語ミニ解説として、オープンソースが「基本設計図である「ソースコード」が公に開示されているソフト」と解説されているのだけれども、ソースコードは基本設計図なのだろうか。基本設計図というのは建築における用語だ。建築では、設計図に…

関数とラムダ計算の話

高階関数と関数オブジェクトとラムダについての自分なりのメモ書き - Line 1: Error: Invalid Blog('by Esehara' )bugrammer.hateblo.jpこの記事へのツッコミみたいなことを書くつもりだったけど、あんまり関係ない話になったので、サイドストーリーみたいに…

アクションと関数、式の値の話

プログラムにおける「関数」とは何かについて、自分なりのまとめ - Line 1: Error: Invalid Blog('by Esehara' )bugrammer.hateblo.jp a -> bというのは、引数にa型の値をとり、b型の値を返す関数の型だ。 Monad mが存在するような任意の型コンストラクタmに…

ES6のジェネレータはHaskellのdo記法ほど強力ではないという話

Monads in JavaScriptcuriosity-driven.org JavaScriptのモナド | プログラミング | POSTDpostd.ccこの記事では、ES6のジェネレータを使って、Haskellのdo記法を模倣したdoM関数を定義し、ジェネレータを使ってモナドを取り扱えることを示している。しかし “…

CoffeeScriptで代数的データを表現する

関数型言語ではポピュラーな機能である、代数的データ型を愛してやまない人は多いだろう。しかし悲しいことに、CoffeeScriptは、代数的データ型を持っていない。今回は、オブジェクトを使って代数的データの条件分岐を表現する方法について書こうと思う。次…

Debug the Haxe Compiler with OCamlDebug

1. Apply the following patch to the Makefile: diff --git a/Makefile b/Makefile index e912e15..1f6c71f 100644 --- a/Makefile +++ b/Makefile @@ -80,7 +80,7 @@ libs: make -C libs/objsize OCAMLOPT=$(OCAMLOPT) OCAMLC=$(OCAMLC) $(TARGET_FLAG) ha…