1 + 1 = 2 をプログラミングで理解する

Legalscape のしろくまです。 自然数の集合論的定義(フォン・ノイマンの構成)は空集合の公理と無限の公理を利用して 以下のようになります。 0 = ∅ 1 = {0} = {∅} 2 = {0, 1} = {∅, {∅}} 3 = {0, 1, 2} = {∅, {∅}, {∅, {∅}}} ・・・ また加算は S(n) = n ∪…

TypeScript は Structural Type System ではない場合がある

Legalscape のしろくまです。 TypeScript の Type System では Nominal な比較が用いられることがあります。 例 class Product { private name: string; } class User { private name: string; } let p = new Product(); let u = new User(); // Type 'User'…