LoginSignup
3
2

More than 5 years have passed since last update.

圏論の図式をSwiftで描く

Posted at

圏論の勉強をかねて図式をSwiftで描くプログラムを作っています。
今作っているのは次のようなものです。

これを使えばSwiftで圏の対象の表示位置と射を定義することでxymatrixを吐き出すことができます。

例として

category.swift
// 全体の大きさを決定する
let maxsize = (4,4)
var matrix:[String:(Int,Int)] = [:]

// 圏の対象 A,B,C,D  配置する。
["A","B","C","D"].enumerated().forEach {
  matrix[$0.1] = ($0.0,0)
}

// 射の指定 A->B->C->D
let abcds = [["A","B","f"],["B","C","g"],["C","D","h"]]
let abcdArrows = abcds.map { Arrow($0) }

// 圏の対象 E  ここでA,B,C,DはEへの射をもつ
matrix["E"] = (3,3)
let others = ["A","B","C","D"].enumerated().map {
   Arrow([$0.1,"E","z" + "\($0.0)"])
}

let arrows = abcdArrows + others

display(matrix:matrix, matrixsize:maxsize, arrows:arrows)

のようにコードを書くことで以下のような図式を描くことができます。

picture.jpg

現状は簡単な図式しか書けませんがさらに複雑な図式が書けるようにしていければと思います。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2