Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save lagenorhynque/4f139d0e6ef338c899fe55c80674e837 to your computer and use it in GitHub Desktop.
Save lagenorhynque/4f139d0e6ef338c899fe55c80674e837 to your computer and use it in GitHub Desktop.

関数型言語テイスティング

Haskell, Scala, Clojure, Elixirを

比べて味わう関数型プログラミングの旨さ


x icon


[参考] 🐬の関数型言語学習/利用経験

most used languages


  • 関数型言語経験: 約12年
    • cf. プログラミング経験: 約13年

    • プログラミング学習初期から関数型言語と戯れてきた(そして非関数型言語に未だに馴染めない😇)

    • 仕事で: Clojure, Scala

    • 趣味で: Clojure, Haskell, Erlang/Elixir, etc.



『7つの言語 7つの世界』

seven languages in seven weeks

オーム社の書籍詳細ページより

『すごいHaskellたのしく学ぼう!』(すごいH本)

learn you a haskell for great good

オーム社の書籍詳細ページより

『プログラミングHaskell』

programming in haskell

オーム社の書籍詳細ページより

『プログラミングClojure 第2版』

programming clojure

オーム社の書籍詳細ページより

『すごいErlangゆかいに学ぼう!』(すごいE本)

learn you some erlang for great good

達人出版会の書籍詳細ページより

『Scala関数型デザイン&プログラミング』(FP in Scala)

fp in scala

インプレスブックスの書籍詳細ページより

Structure and Interpretation of Computer Programs (SICP, 魔術師本)

sicp

Wikipedia英語版のStructure and Interpretation of Computer Programsより
  1. きっかけ

  2. 「関数型プログラミング」

  3. 🍷 テイスティング

    1. 4つの関数型言語の基本
    2. 関数
    3. データ
    4. 評価
    5. ポリモーフィズム
  4. 関数型プログラマのメンタルモデル


1. きっかけ


関数型プログラミング(言語)に関する解説で

🐬は以下のような表現をよく目にする:

近年、関数型プログラミング(言語)のエッセンスが多くの主流言語に取り入れられてきました。


関数型プログラミング(言語)の

「エッセンス」??? 🤔


エッセンス(essence)

  • 語源: 🇬🇧 essence < essentia < esse + -ia (≒ 🇬🇧 beingness, あるということ)
  • 語義: 「本質(的に重要なもの)」
    • 抽出物(エキス)という派生的/比喩的な意味も
    • 本来、単なる成分/要素のような意味ではない
  • cf. 🇫🇷 哲学の文脈で関連する表現
    • l'existence précède l'essence (実存は本質に先立つ)
    • L'essentiel est invisible pour les yeux. (🦊「大切なものは目に見えないんだよ。」)

ワイン🍷テイスティングでは色(視覚)・香り(嗅覚)・味(味覚)から吟味するように、

4つの関数型言語を例にその味わいを多角的に探り、「エッセンス」(= 本質)を見出したい

関数型言語テイスティング


2. 「関数型プログラミング」


(現在の)🐬によるFPとFPLの定義

  • 関数型プログラミング := 純粋関数を基本要素としてその組み合わせによってプログラムを構成していくプログラミングスタイル

    • → 言語を問わず実践可能(実践しやすさは異なる)
  • 関数型言語 := 関数型プログラミングが言語/標準ライブラリレベルで十分に支援される(そして関数型プログラミングスタイルがユビキタスな)言語

    • → 例えばJavaScript/TypeScriptやJava、Kotlin、古典的なLisp方言は含めない

functional programming concept map

※ 🐬が思い浮かぶ概念/用語を連想的に列挙したもの(網羅的でも体系的でもない)

functional programming concept map (values)


functional programming concept map (languages)


functional programming concept map (theories)


functional programming concept map (implementations)


functional programming concept map (patterns)


3. 🍷 テイスティング

  1. 4つの関数型言語の基本
  2. 関数
  3. データ
  4. 評価
  5. ポリモーフィズム

3-1. 🍷 4つの関数型言語の基本

Haskell, Scala, Clojure, Elixir


functional programming concept map (languages)


Haskell Scala Clojure Elixir
paradigm FP OOP, FP FP FP
typing static static dynamic dynamic
first appeared 1990 2004 2007 2012
related ML ML Lisp Lisp
🐬's note lazy/pure FPL standard OOPL in FPL's skin modern functional Lisp Erlang + Ruby + Clojure

モジュール定義とトップレベル変数

{- Haskell -}
-- モジュールとそのエクスポートリスト
module SomeModule(a) where
-- パブリック変数
a :: Int
a = 1
-- プライベート変数
b :: Int
b = 2
/* Scala */
// (シングルトン)オブジェクト
object SomeModule:
  // パブリック変数
  val a: Int = 1
  // プライベート変数
  private val b: Int = 2

;;; Clojure
;; 名前空間
(ns some-module)
;; パブリック変数
(def a 1)
;; プライベート変数
(def ^:private b 2)
## Elixir
# モジュール
defmodule SomeModule do
  # パブリックな0引数関数
  def a, do: 1
  # プライベートな0引数関数
  defp b, do: 2
end

トップレベル関数

{- Haskell -}
module SimpleMath(square) where
-- パブリック関数
square :: Int -> Int
square n = n * n
-- プライベート関数
double :: Int -> Int
double n = n * 2
/* Scala */
object SimpleMath:
  // パブリックメソッド
  def square(n: Int): Int =
    n * n
  // プライベートメソッド
  private def double(n: Int): Int =
    n * 2

;;; Clojure
(ns simple-math)
;; パブリック関数
(defn square [n] (* n n))
;; プライベート関数
(defn- double' [n] (* n 2))
## Elixir
defmodule SimpleMath do
  # パブリック関数
  def square(n), do: n * n
  # プライベート関数
  defp double(n), do: n * 2
end

モジュールの利用

{- Haskell: ghciコマンドによるREPL -}
λ> :l SimpleMath
...
λ> import qualified SimpleMath as M  -- モジュールを別名で参照
λ> M.square 3
9
it :: Int
λ> map M.square [0..10]
[0,1,4,9,16,25,36,49,64,81,100]
it :: [Int]
/* Scala: scalaコマンドによるREPL */
scala> :l SimpleMath.scala
// defined object SimpleMath
scala> import SimpleMath as M  // オブジェクトを別名で参照
scala> M.square(3)
val res0: Int = 9
scala> (0 to 10).map(M.square)
val res1: IndexedSeq[Int] = Vector(0, 1, 4, 9, 16, 25, 36,
  49, 64, 81, 100)

;;; Clojure: cljコマンドによるREPL
user=> (clojure.main/load-script "simple_math.clj")
#'simple-math/double'
user=> (require '[simple-math :as m])  ; 名前空間を別名で参照
nil
user=> (m/square 3)
9
user=> (map m/square (range 0 (inc 10)))
(0 1 4 9 16 25 36 49 64 81 100)
## Elixir: iexコマンドによるREPL
# `iex simple_math.ex` でファイルを読み込んで起動
iex(1)> alias SimpleMath, as: M  # モジュールを別名で参照
SimpleMath
iex(2)> M.square(3)
9
iex(3)> Enum.map(0..10, &M.square/1)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

ローカル束縛(変数)

{- Haskell -}
λ> :{  -- REPLでの複数行入力の開始
λ| -- ML系言語でお馴染み(?)のlet式
λ| let x = 5
λ|     y = M.square(x)
λ| in "square " ++ show x ++ " = " ++ show y
λ| :}  -- REPLでの複数行入力の終了
"square 5 = 25"
it :: [Char]
/* Scala */
scala> val x = 5
val x: Int = 5
scala> val y = M.square(x)
val y: Int = 25
scala> s"square($x) = $y"
val res2: String = square(5) = 25

;;; Clojure
;; Lisp系言語でお馴染み(?)のlet式
user=> (let [x 5
             y (m/square x)]
         (str "(square " x ") = " y))
"(square 5) = 25"
## Elixir
iex(4)> x = 5
5
iex(5)> y = M.square(x)
25
iex(6)> "square(#{x}) = #{y}"
"square(5) = 25"

無名関数(ラムダ式)

{- Haskell -}
λ> (\n -> n * n * n) 2
8
it :: Num a => a
λ> map (\n -> n * n * n) [0..10]
[0,1,8,27,64,125,216,343,512,729,1000]
it :: (Num b, Enum b) => [b]
/* Scala */
scala> ((n: Int) => n * n * n)(2)
val res0: Int = 8
scala> (0 to 10).map(n => n * n * n)
val res1: IndexedSeq[Int] = Vector(0, 1, 8, 27, 64, 125, 216,
  343, 512, 729, 1000)

;;; Clojure
user=> ((fn [n] (* n n n )) 2)
8
user=> (#(* % % %) 2)  ; 無名関数の略記法
8
user=> (map (fn [n] (* n n n )) (range 0 (inc 10)))
(0 1 8 27 64 125 216 343 512 729 1000)
user=> (map #(* % % %) (range 0 (inc 10)))
(0 1 8 27 64 125 216 343 512 729 1000)
## Elixir
iex(1)> (fn n -> n * n * n end).(2)
8
iex(2)> (&(&1 * &1 * &1)).(2)  # 無名関数の略記法
8
iex(3)> Enum.map(0..10, fn n -> n * n * n end)
[0, 1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
iex(4)> Enum.map(0..10, &(&1 * &1 * &1))
[0, 1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]

再帰と無限リスト(1): 階乗

{- Haskell -}
module Factorial where

factorial :: Integral a => a -> a
factorial 0 = 1
factorial n = n * factorial (n - 1)

factorialSeq :: Integral a => [a]
factorialSeq = scanl (*) 1 [1..]
-- import Factorial (factorialSeq)
λ> take 10 factorialSeq
[1,1,2,6,24,120,720,5040,40320,362880]
it :: Integral a => [a]
λ> factorialSeq !! 100
9332621544394415268169923885626670049071596826438162146859296
3895217599993229915608941463976156518286253697920827223758251
185210916864000000000000000000000000
it :: Integral a => a

/* Scala */
object Factorial:
  def factorial(n: Int): BigInt = n match
    case 0 => 1
    case _ => n * factorial(n - 1)

  def factorialSeq: LazyList[BigInt] =
    LazyList.from(1).scanLeft(BigInt(1))(_ * _)
// import Factorial.factorialSeq
scala> factorialSeq.take(10).toList
val res0: List[BigInt] = List(1, 1, 2, 6, 24, 120, 720, 5040,
  40320, 362880)
scala> factorialSeq(100)
val res1: BigInt = 933262154439441526816992388562667004907159
6826438162146859296389521759999322991560894146397615651828625
3697920827223758251185210916864000000000000000000000000

;;; Clojure
(ns factorial)

(defn factorial [n]
  (if (zero? n)
    1
    (*' n (factorial (dec' n)))))

(defn factorial-seq []
  (reductions *' 1 (iterate inc' 1)))
;; (require '[factorial :refer [factorial-seq]])
user=> (take 10 (factorial-seq))
(1 1 2 6 24 120 720 5040 40320 362880)
user=> (nth (factorial-seq) 100)
9332621544394415268169923885626670049071596826438162146859296
3895217599993229915608941463976156518286253697920827223758251
185210916864000000000000000000000000N

## Elixir
defmodule Factorial do
  def factorial(0), do: 1
  def factorial(n), do: n * factorial(n - 1)

  def factorial_seq do
    Stream.concat(
      [1],
      Stream.scan(Stream.from_index(1), &*/2)
    )
  end
end
# import Factorial, only: [factorial_seq: 0]
iex(2)> Enum.take(factorial_seq, 10)
[1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880]
iex(3)> Enum.at(factorial_seq, 100)
9332621544394415268169923885626670049071596826438162146859296
3895217599993229915608941463976156518286253697920827223758251
185210916864000000000000000000000000

再帰と無限リスト(2): フィボナッチ数

{- Haskell -}
module Fibonacci where

fib :: Integral a => a -> a
fib 0 = 0
fib 1 = 1
fib n = fib (n - 1) + fib (n - 2)

fibSeq :: Integral a => [a]
fibSeq = map fst $ iterate (\(a, b) -> (b, a + b)) (0, 1)
-- import Fibonacci (fibSeq)
λ> take 10 fibSeq
[0,1,1,2,3,5,8,13,21,34]
it :: Integral a => [a]
λ> take 3 $ drop 100 fibSeq
[354224848179261915075,573147844013817084101,
  927372692193078999176]
it :: Integral a => [a]

/* Scala */
object Fibonacci:
  def fib(n: Int): BigInt = n match
    case 0 => 0
    case 1 => 1
    case _ => fib(n - 1) + fib(n - 2)

  def fibSeq: LazyList[BigInt] =
    LazyList.iterate((BigInt(0), BigInt(1))) {
      case (a, b) => (b, a + b)
    }.map(_(0))
// import Fibonacci.fibSeq
scala> fibSeq.take(10).toList
val res2: List[BigInt] = List(0, 1, 1, 2, 3, 5, 8, 13, 21,
  34)
scala> fibSeq.drop(100).take(3).toList
val res3: List[BigInt] = List(354224848179261915075,
  573147844013817084101, 927372692193078999176)

;;; Clojure
(ns fibonacci)

(defn fib [n]
  (case n
    0 0
    1 1
    (+' (fib (-' n 1))
        (fib (-' n 2)))))

(defn fib-seq []
  (->> [0 1]
       (iterate (fn [[a b]] [b (+' a b)]))
       (map first)))
;; (require '[fibonacci :refer [fib-seq]])
user=> (take 10 (fib-seq))
(0 1 1 2 3 5 8 13 21 34)
user=> (->> (fib-seq) (drop 100) (take 3))
(354224848179261915075N 573147844013817084101N
  927372692193078999176N)

## Elixir
defmodule Fibonacci do
  def fib(0), do: 0
  def fib(1), do: 1
  def fib(n), do: fib(n - 1) + fib(n - 2)

  def fib_seq do
    {0, 1}
    |> Stream.iterate(fn {a, b} -> {b, a + b} end)
    |> Stream.map(&elem(&1, 0))
  end
end
# import Fibonacci, only: [fib_seq: 0]
iex(2)> Enum.take(fib_seq, 10)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
iex(3)> fib_seq |> Stream.drop(100) |> Enum.take(3)
[354224848179261915075, 573147844013817084101,
  927372692193078999176]

FP Matsuri official online store T-shirts


3-2. 🍷 関数


functional programming concept map (patterns)


functional programming concept map (patterns - function)


  • 式を評価すると値が得られる

  • 部分式を関数として抽出(分解)し関数を組み合わせ(合成)て式を構成する

→ 関数が簡潔に楽に組み合わせられると旨い😋


部分適用

{- Haskell -}
λ> :t map  -- 関数はカリー(1引数関数の連鎖)化されている
map :: (a -> b) -> [a] -> [b]
λ> :t (+)  -- 演算子もカリー化されている
(+) :: Num a => a -> a -> a
λ> :t (+ 1)  -- \x -> x + 1 と等価(セクション記法による部分適用)
(+ 1) :: Num a => a -> a
λ> :t map (+ 1)  -- \xs -> map (+ 1) xs と等価(部分適用)
map (+ 1) :: Num b => [b] -> [b]
λ> map (+ 1) [0..9]
[1,2,3,4,5,6,7,8,9,10]
it :: (Num b, Enum b) => [b]
λ> f x y z = x * y * z
f :: Num a => a -> a -> a -> a
λ> :t f 2 3  -- 2番目の引数まで部分適用
f 2 3 :: Num a => a -> a
λ> f 2 3 4
24
it :: Num a => a

/* Scala */
scala> :t (1 to 10).map  // メソッドが関数になる(eta-expansion)
(Int => Any) => IndexedSeq[Any]
scala> :t (_: Int) + (_: Int)  // (x, y) => x + y と等価
(Int, Int) => Int
scala> :t (_: Int) + 1  // x => x + 1 と等価(部分適用)
Int => Int
scala> (0 to 9).map(_ + 1)
val res0: IndexedSeq[Int] = Vector(1, 2, 3, 4, 5, 6, 7, 8, 9,
  10)
scala> def f(x: Int)(y: Int)(z: Int): Int = x * y * z
def f(x: Int)(y: Int)(z: Int): Int
scala> f(2)(3)  // 2番目の引数まで部分適用
val res1: Int => Int = Lambda/0x00001ff001554c40@478c84aa
scala> f(2)(3)(4)
val res2: Int = 24

;;; Clojure
user=> #(+ %1 %2 %3)  ; (fn [x y z] (+ x y z)) と等価
#object[user$eval245$fn__246 0x7103ab0 "user$eval245$fn__246@
7103ab0"]
user=> #(+ % 1)  ; (fn [x] (+ x 1)) と等価(部分適用)
#object[user$eval235$fn__236 0x4c03a37 "user$eval235$fn__236@
4c03a37"]
user=> (map #(+ % 1) (range 0 (inc 9)))
(1 2 3 4 5 6 7 8 9 10)
user=> (defn f [x y z] (* x y z))
#'user/f
user=> (partial f 2 3)  ; 2番目の引数まで部分適用 = #(f 2 3 %)
#object[clojure.core$partial$fn__5929 0x4ba89729 "clojure.cor
e$partial$fn__5929@4ba89729"]
user=> ((partial f 2 3) 4)
24
user=> (f 2 3 4)
24

## Elixir
iex(1)> &(&1 + &2)  # fn (x, y) -> x + y end と等価
&:erlang.+/2
iex(2)> &(&1 + 1)  # fn x -> x + 1 end と等価(部分適用)
#Function<42.81571850/1 in :erl_eval.expr/6>
iex(3)> Enum.map(0..9, &(&1 + 1))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
iex(4)> f = fn x -> fn y -> fn z -> x * y * z end end end
#Function<42.81571850/1 in :erl_eval.expr/6>
iex(5)> f.(2).(3)  # 2番目の引数まで部分適用
#Function<42.81571850/1 in :erl_eval.expr/6>
iex(6)> f.(2).(3).(4)
24

関数合成

{- Haskell: import Fibonacci (fibSeq) -}
λ> sumOfEvenFibs upper = sum (takeWhile (<= upper) (filter
  even (drop 2 fibSeq)))
sumOfEvenFibs :: Integral a => a -> a
λ> :{
λ| sumOfEvenFibs' upper = sum
λ|     $ takeWhile (<= upper)  -- f $ x = f x
λ|     $ filter even           --   (関数適用演算子)
λ|     $ drop 2 fibSeq
λ| :}
sumOfEvenFibs' :: Integral a => a -> a
λ> sumOfEvenFibs' 4000000
4613732
it :: Integral a => a

ref. #2 Even Fibonacci Numbers - Project Euler


{- Haskell -}
λ> :{
λ| sumOfEvenNums :: Integral a => a -> [a] -> a
λ| sumOfEvenNums upper = sum
λ|     . takeWhile (<= upper)  -- f . g = \x -> f (g x)
λ|     . filter even           --   (関数合成演算子)
λ| :}
sumOfEvenNums :: Integral a => a -> [a] -> a
λ> sumOfEvenNums 4000000 $ drop 2 fibSeq
4613732
it :: Integral a => a

/* Scala: import Fibonacci.fibSeq */
scala> def sumOfEvenFibs(upper: BigInt) =
     |   fibSeq
     |     .drop(2)
     |     .filter(_ % 2 == 0)
     |     .takeWhile(_ <= upper)
     |     .sum
     |
def sumOfEvenFibs(upper: BigInt): BigInt
scala> sumOfEvenFibs(4000000)
val res0: BigInt = 4613732

/* Scala */
scala> extension (nums: Seq[BigInt])  // 拡張メソッドの定義
     |   def sumOfEvenNums(upper: BigInt): BigInt =
     |     nums
     |       .filter(_ % 2 == 0)
     |       .takeWhile(_ <= upper)
     |       .sum
     |
def sumOfEvenNums(ns: Seq[BigInt])(upper: BigInt): BigInt
scala> fibSeq.drop(2).sumOfEvenNums(4000000)
val res1: BigInt = 4613732

/* Scala */
scala> def sumOfEvenNums2(upper: BigInt)(nums: Seq[BigInt]):
         BigInt =
     |   nums
     |     .filter(_ % 2 == 0)
     |     .takeWhile(_ <= upper)
     |     .sum
     |
def sumOfEvenNums2(upper: BigInt)(nums: Seq[BigInt]): BigInt
scala> import scala.util.chaining._  // pipeメソッドを導入
scala> fibSeq.drop(2).pipe(sumOfEvenNums2(4000000))
val res2: BigInt = 4613732

;;; Clojure: (require '[fibonacci :refer [fib-seq]])
user=> (defn sum-of-even-fibs [upper]
         (apply +
                (take-while #(<= % upper)
                                                    (filter even?
                                                            (drop 2 (fib-seq))))))
#'user/sum-of-even-fibs
user=> (defn sum-of-even-fibs' [upper]
         (->> (fib-seq)  ; (->> x f g) = (g (f x))
              (drop 2)   ;   (thread-lastマクロ)
              (filter even?)
              (take-while #(<= % upper))
              (apply +)))
#'user/sum-of-even-fibs'
user=> (sum-of-even-fibs' 4000000)
4613732

;;; Clojure
user=> (defn sum-of-even-fibs'' [upper]
         (transduce
          ;; 関数合成関数compでトランスデューサー(transducer)を合成
          (comp (drop 2)
                (filter even?)
                (take-while #(<= % upper)))
          +
          (fib-seq)))
#'user/sum-of-even-fibs''
user=> user=> (sum-of-even-fibs'' 4000000)
4613732
user=> (defn sum-of-even-nums [upper nums]
         (transduce (comp (filter even?)
                                                  (take-while #(<= % upper)))
                    +
                    nums))
#'user/sum-of-even-nums
user=> (->> (fib-seq) (drop 2) (sum-of-even-nums 4000000))
4613732

## Elixir: import Fibonacci, only: [fib_seq: 0]
iex(2)> require Integer
Integer
iex(3)> sum_of_even_fibs = fn upper ->
...(3)>   Enum.sum(Stream.take_while(Stream.filter(
  Stream.drop(fib_seq, 2), &Integer.is_even/1),
  &(&1 <= upper)))
...(3)> end
#Function<42.81571850/1 in :erl_eval.expr/6>
iex(4)> sum_of_even_fibs2 = fn upper ->
...(4)>   fib_seq            # x |> f |> g = g(f(x))
...(4)>   |> Stream.drop(2)  #   (パイプ演算子)
...(4)>   |> Stream.filter(&Integer.is_even/1)
...(4)>   |> Stream.take_while(&(&1 <= upper))
...(4)>   |> Enum.sum()
...(4)> end
#Function<42.81571850/1 in :erl_eval.expr/6>
iex(5)> sum_of_even_fibs2.(4000000)
4613732

## Elixir
iex(6)> sum_of_even_nums = fn nums, upper ->
...(6)>   nums
...(6)>   |> Stream.filter(&Integer.is_even/1)
...(6)>   |> Stream.take_while(&(&1 <= upper))
...(6)>   |> Enum.sum()
...(6)> end
#Function<41.81571850/2 in :erl_eval.expr/6>
iex(7)> fib_seq |> Stream.drop(2) |>
  sum_of_even_nums.(4000000)
4613732

3-3. 🍷 データ


functional programming concept map (patterns)


functional programming concept map (patterns - data)


  • 不変なデータ構造を関数を介して変換する

  • データ型を定義したり構築したり分解したり

→ 不変データ構造が標準で豊富で、データ型の定義/利用が楽だと旨い😋


標準の不変/永続コレクション

{- Haskell -}
λ> :t [1, 2, 3]  -- (連結)リスト
[1, 2, 3] :: Num a => [a]
λ> 0 : [1, 2, 3]  -- 先頭に要素追加(cons)
[0,1,2,3]
it :: Num a => [a]
λ> import qualified Data.Vector as V
λ> :t V.fromList [1, 2, 3]  -- ベクター(可変長配列)
V.fromList [1, 2, 3] :: Num a => V.Vector a
λ> V.snoc (V.fromList [1, 2, 3]) 4  -- 末尾に要素追加(snoc)
[1,2,3,4]
it :: Num a => V.Vector a

{- Haskell -}
λ> import qualified Data.Set as S
λ> :t S.fromList [1, 2, 3]  -- セット
S.fromList [1, 2, 3] :: (Ord a, Num a) => S.Set a
λ> S.insert 4 $ S.fromList [1, 2, 3]
fromList [1,2,3,4]
it :: (Ord a, Num a) => S.Set a
λ> import qualified Data.Map as M
λ> :t M.fromList [("a", 1), ("b", 2), ("c", 3)]  -- マップ
M.fromList [("a", 1), ("b", 2), ("c", 3)]
  :: Num a => M.Map String a
λ> M.insert "d" 4 $ M.fromList [("a", 1), ("b", 2), ("c", 3)]
fromList [("a",1),("b",2),("c",3),("d",4)]
it :: Num a => M.Map String a

{- Haskell -}
λ> [x * y | x <- [1..2], y <- [1..9]]  -- リスト内包表記
[1,2,3,4,5,6,7,8,9,2,4,6,8,10,12,14,16,18]
it :: (Enum a, Num a) => [a]
λ> :{
λ| do  -- do記法(a.k.a. モナド内包表記)
λ|     x <- [1..2]
λ|     y <- [1..9]
λ|     return $ x * y
λ| :}
[1,2,3,4,5,6,7,8,9,2,4,6,8,10,12,14,16,18]
it :: (Num b, Enum b) => [b]
λ> :{
λ| do  -- Maybe, Eitherなど任意のモナドで利用できる
λ|     x <- Just 2
λ|     y <- Just 3
λ|     return $ x * y
λ| :}
Just 6
it :: Num b => Maybe b

/* Scala */
scala> List(1, 2, 3)  // (連結)リスト
val res0: List[Int] = List(1, 2, 3)
scala> 0 :: List(1, 2, 3)  // 先頭に要素追加(cons)
val res1: List[Int] = List(0, 1, 2, 3)
scala> Vector(1, 2, 3)  // ベクター(可変長配列)
val res2: Vector[Int] = Vector(1, 2, 3)
scala> Vector(1, 2, 3) :+ 4  // 末尾に要素追加
val res3: Vector[Int] = Vector(1, 2, 3, 4)

/* Scala */
scala> Set(1, 2, 3)  // セット
val res4: Set[Int] = Set(1, 2, 3)
scala> Set(1, 2, 3) + 4  // 要素追加
val res5: Set[Int] = Set(1, 2, 3, 4)
scala> Map("a" -> 1, "b" -> 2, "c" -> 3)  // マップ
val res6: Map[String, Int] = Map(a -> 1, b -> 2, c -> 3)
scala> Map("a" -> 1, "b" -> 2, "c" -> 3) + ("d" -> 4)
val res7: Map[String, Int] = Map(a -> 1, b -> 2, c -> 3, d ->
  4)

/* Scala */
scala> for  // for式(a.k.a. for内包表記)
     |   x <- 1 to 2
     |   y <- 1 to 9
     | yield x * y
val res8: IndexedSeq[Int] = Vector(1, 2, 3, 4, 5, 6, 7, 8, 9,
  2, 4, 6, 8, 10, 12, 14, 16, 18)
scala> for  // Option, EitherなどflatMap/mapを備えた型で利用できる
     |   x <- Some(2)
     |   y <- Some(3)
     | yield x * y
val res9: Option[Int] = Some(6)

;;; Clojure
user=> (type '(1 2 3))  ; (連結)リスト
clojure.lang.PersistentList
user=> (conj '(1 2 3) 0)  ; 先頭に要素追加
(0 1 2 3)
user=> (cons 0 '(1 2 3))  ; シーケンスとして要素追加
(0 1 2 3)
user=> (type [1 2 3])  ; ベクター(可変長配列)
clojure.lang.PersistentVector
user=> (conj [1 2 3] 4)  ; 末尾に要素追加
[1 2 3 4]
user=> (cons 0 [1 2 3])  ; シーケンスとして要素追加
(0 1 2 3)

;;; Clojure
user=> (type #{1 2 3})  ; セット
clojure.lang.PersistentHashSet
user=> (conj #{1 2 3} 4)  ; 要素追加
#{1 4 3 2}
user=> (cons 0 #{1 2 3})  ; シーケンスとして要素追加
(0 1 3 2)
user=> (type {:a 1 :b 2 :c 3})  ; マップ
clojure.lang.PersistentArrayMap
user=> (assoc {:a 1 :b 2 :c 3} :d 4)  ; エントリー追加
{:a 1, :b 2, :c 3, :d 4}
user=> (cons [:z 0] {:a 1 :b 2 :c 3})  ; シーケンスとして要素追加
([:z 0] [:a 1] [:b 2] [:c 3])

;;; Clojure
user=> (for [x (range 1 (inc 2))  ; forマクロ
             y (range 1 (inc 9))] ;   (a.k.a. シーケンス内包表記)
         (* x y))
(1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18)
;; 様々なデータがシーケンス(論理的なリスト)として扱える(seqable)
user=> (take 2 "abc")  ; 文字列
(\a \b)  ; 文字シーケンス
user=> (take 2 (java.util.List/of 1 2 3))  ; Javaのリスト
(1 2)  ; Clojureのシーケンス
user=> (take 2 {:a 1 :b 2 :c 3})  ; マップ
([:a 1] [:b 2])  ; エントリー(ベクター)シーケンス
user=> (require '[clojure.java.io :as io])
nil
user=> (with-open [r (io/reader "fibonacci.clj")]  ; ファイル
         (->> r line-seq (take 3) doall))
("(ns fibonacci)" "" "(defn fib [n]")  ; テキスト行シーケンス

## Elixir
iex(1)> i [1, 2, 3]  # (連結)リスト
Term
  [1, 2, 3]
Data type
  List
...
iex(2)> [0 | [1, 2, 3]]  # 先頭に要素追加(cons)
[0, 1, 2, 3]
iex(3)> i [a: 1, b: 2, c: 3]  # キーワードリスト
Term
  [a: 1, b: 2, c: 3]
Data type
  List
...
iex(4)> [{:z, 0} | [a: 1, b: 2, c: 3]]  # 先頭に要素追加
[z: 0, a: 1, b: 2, c: 3]

## Elixir
iex(5)> i MapSet.new([1, 2, 3])  # セット
Term
  MapSet.new([1, 2, 3])
Data type
  MapSet
...
iex(6)> MapSet.put(MapSet.new([1, 2, 3]), 4)
MapSet.new([1, 2, 3, 4])
iex(7)> i %{a: 1, b: 2, c: 3}  # マップ
Term
  %{c: 3, b: 2, a: 1}
Data type
  Map
...
iex(8)> Map.put(%{a: 1, b: 2, c: 3}, :d, 4)
%{c: 3, b: 2, a: 1, d: 4}

## Elixir
iex(9)> for x <- 1..2,  # Enumerableに対する内包表記
...(9)>     y <- 1..9 do
...(9)>   x * y
...(9)> end
[1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 4, 6, 8, 10, 12, 14, 16, 18]
# EnumerableであればEnumモジュールの関数で扱える
iex(10)> Enum.take([a: 1, b: 2, c: 3], 2)
[a: 1, b: 2]
iex(11)> Enum.take(MapSet.new([1, 2, 3]), 2)
[1, 2]
iex(12)> Enum.take(%{a: 1, b: 2, c: 3}, 2)
[c: 3, b: 2]
iex(13)> Enum.take([1, 2, 3], 2)
[1, 2]

データ型の定義と値の構築・分解/分岐

{- Haskell -}
λ> :{
λ| data Tree a  -- 代数的データ型の定義
λ|     = Leaf !a
λ|     | Branch { left :: !(Tree a)
λ|              , right :: !(Tree a)
λ|              }
λ|     deriving (Show, Eq)
λ| :}
type Tree :: * -> *
data Tree a = ...
left :: Tree a -> Tree a
right :: Tree a -> Tree a

{- Haskell -}
λ> t = Branch (Branch (Leaf 1) (Branch (Leaf 2) (Leaf 3)))
  (Leaf 4)
t :: Num a => Tree a
[Prelude]
λ> left t
Branch {left = Leaf 1, right = Branch {left = Leaf 2, right =
  Leaf 3}}
it :: Num a => Tree a
λ> right t
Leaf 4
it :: Num a => Tree a
λ> :{
λ| size :: Tree a -> Int
λ| size (Leaf _) = 1  -- 関数の引数でのパターンマッチ
λ| size (Branch l r) = 1 + size l + size r
λ| :}
size :: Tree a -> Int
λ> size t
7
it :: Int

/* Scala */
scala> enum Tree[+A]:  // 代数的データ型の定義
     |   case Leaf(value: A)
     |   case Branch(left: Tree[A], right: Tree[A])
     |
// defined class Tree
scala> import Tree.*
scala> val t: Branch[Int] = Branch(Branch(Leaf(1), Branch(
  Leaf(2), Leaf(3))), Leaf(4))
val t: Tree.Branch[Int] = Branch(Branch(Leaf(1),Branch(
  Leaf(2),Leaf(3))),Leaf(4))
scala> t.left
val res0: Tree[Int] = Branch(Leaf(1),Branch(Leaf(2),Leaf(3)))
scala> t.right
val res1: Tree[Int] = Leaf(4)

/* Scala */
scala> extension [A](tree: Tree[A])  // 拡張メソッドの定義
     |   def size: Int = tree match
     |     case Leaf(_) => 1
     |     case Branch(l, r) => 1 + l.size + r.size
     |
def size[A](tree: Tree[A]): Int
scala> t.size
val res2: Int = 7

;;; Clojure
user=> (defrecord Leaf [value])  ; レコードの定義
user.Leaf
user=> (defrecord Branch [left right])
user.Branch
user=> (def t
         (->Branch (->Branch (->Leaf 1)
                                                     (->Branch (->Leaf 2)
                                                               (->Leaf 3)))
                   (->Leaf 4)))
#'user/t
user=> (:left t)
#user.Branch{:left #user.Leaf{:value 1}, :right #user.Branch{
  :left #user.Leaf{:value 2}, :right #user.Leaf{:value 3}}}
user=> (:right t)
#user.Leaf{:value 4}

;;; Clojure
user=> (defmulti size class)  ; マルチメソッドの定義
#'user/size
user=> (defmethod size Leaf [_] 1)
#object[clojure.lang.MultiFn 0x6fc3e1a4 "clojure.lang.MultiFn
@6fc3e1a4"]                   ; ↓ 関数の引数での分配束縛
user=> (defmethod size Branch [{:keys [left right]}]
         (+ 1 (size left) (size right)))
#object[clojure.lang.MultiFn 0x6fc3e1a4 "clojure.lang.MultiFn
@6fc3e1a4"]
user=> (size t)
7

## Elixir
iex(1)> defmodule Leaf do  # 構造体の定義
...(1)>   defstruct [:value]
...(1)> end
{:module, Leaf, ...}
iex(2)> defmodule Branch do
...(2)>   defstruct [:left, :right]
...(2)> end
{:module, Branch, ...}
iex(3)> t = %Branch{left: %Branch{left: %Leaf{value: 1},
  right: %Branch{left: %Leaf{value: 2}, right: %Leaf{value:
  3}}}, right: %Leaf{value: 4}}
%Branch{...}
iex(4)> t.left
%Branch{left: %Leaf{value: 1}, right: %Branch{left: %Leaf{
  value: 2}, right: %Leaf{value: 3}}}
iex(5)> t.right
%Leaf{value: 4}

## Elixir
iex(6)> defmodule Tree do
...(6)>   def size(%Leaf{}), do: 1  # 関数の引数でのパターンマッチ
...(6)>   def size(%Branch{left: left, right: right}) do
...(6)>     1 + size(left) + size(right)
...(6)>   end
...(6)> end
{:module, Tree, ...}
iex(7)> Tree.size(t)
7

3-4. 🍷 評価


functional programming concept map (patterns)


functional programming concept map (patterns - lazy evaluation)


  • 純粋関数、不変データを前提とすると、評価の順序やタイミングの自由度が高まる

  • 必要になるまで評価を先送りしたり(遅延評価)、評価済みの値を再利用したり(メモ化)

→ 目的に合わせて評価を制御できると旨い😋


評価の制御と遅延コレクション

{- Haskell: 言語のデフォルトの評価戦略は遅延(非正格)評価 -}
-- 関数の定義: call by need
λ> f x y = if x > 0 then x else y
f :: (Ord a, Num a) => a -> a -> a
-- 引数yにアクセスされなければエラーが生じない
λ> f 1 (2 `div` 0)
1
it :: Integral a => a
λ> f 0 (2 `div` 0)
*** Exception: divide by zero
-- bang patternを利用した関数の定義: call by value
λ> g !x !y = if x > 0 then x else y
g :: (Ord a, Num a) => a -> a -> a
-- 引数x, yは直ちに評価される
λ> g 1 (2 `div` 0)
*** Exception: divide by zero

{- Haskell -}
-- 無限に続く整数のリストから先頭3要素を取り出す
λ> take 3 [0..]
[0,1,2]
it :: (Num a, Enum a) => [a]
-- 3番目の要素にアクセスしなければエラーが生じない
λ> [1, 2, 3 `div` 0] !! 2
*** Exception: divide by zero
λ> take 2 [1, 2, 3 `div` 0]
[1,2]

{- Haskell -}
-- データ型の定義
λ> data Pair = Pair { l :: Int, r :: Int }
...
-- r にアクセスしなければエラーが生じない
λ> l $ Pair 1 (2 `div` 0)
1
it :: Int
λ> r $ Pair 1 (2 `div` 0)
*** Exception: divide by zero
-- 値コンストラクタに正格性フラグを利用したデータ型の定義
λ> data Pair' = Pair' { l :: !Int, r :: !Int }
...
 -- r にアクセスしなくてもエラーが生じる
λ> l $ Pair' 1 (2 `div` 0)
*** Exception: divide by zero

/* Scala: 言語の評価戦略は積極(正格)評価 */
// 関数の定義: call by value
scala> def f(x: Int, y: Int): Int =
     |   if (x > 0) x else y
     |
def f(x: Int, y: Int): Int
// 引数x, yは直ちに評価される
scala> f(1, 2 / 0)
java.lang.ArithmeticException: / by zero
// 名前渡しパラメータを利用した関数の定義: call by name
scala> def g(x: => Int, y: => Int): Int =
     |   if (x > 0) x else y  // この場合、xは最大2回評価される
     |    // (回避するには評価結果をローカル束縛(メモ化)して再利用)
def g(x: => Int, y: => Int): Int
// 引数yにアクセスされなければエラーが生じない
scala> g(1, 2 / 0)
val res1: Int = 1
scala> g(0, 2 / 0)
java.lang.ArithmeticException: / by zero

/* Scala */
// 無限に続く整数の遅延リストから先頭3要素を取り出す
scala> LazyList.from(0).take(3).toList
val res3: List[Int] = List(0, 1, 2)
// 3番目の要素にアクセスしなければエラーが生じない
scala> (1 #:: 2 #:: (3 / 0) #:: LazyList.empty)(2)
java.lang.ArithmeticException: / by zero
scala> (1 #:: 2 #:: (3 / 0) #:: LazyList.empty).take(2)
  .toList
val res5: List[Int] = List(1, 2)

;;; Clojure: 言語の評価戦略は積極(正格)評価
;; 関数の定義: call by value
user=> (defn f [x y]
         (if (pos? x) x y))
#'user/f
;; 引数x, yは直ちに評価される
user=> (f 1 (/ 2 0))
Execution error (ArithmeticException) at user/eval373 ...
Divide by zero
;; マクロの定義: call by name
user=> (defmacro g [x y]
         `(if (pos? ~x) ~x ~y))  ; この場合、xは最大2回評価される
#'user/g     ; (回避するには評価結果をローカル束縛(メモ化)して再利用)
;; 引数yにアクセスされなければエラーが生じない
user=> (g 1 (/ 2 0))
1
user=> (g 0 (/ 2 0))
Execution error (ArithmeticException) at user/eval382 ...
Divide by zero

;;; Clojure
;; 無限に続く整数の遅延シーケンスから先頭3要素を取り出す
user=> (take 3 (range))
(0 1 2)
;; 3番目の要素にアクセスしなければエラーが生じない
user=> (nth (lazy-seq
             (cons 1 (lazy-seq
                      (cons 2 (lazy-seq
                                                       (cons (/ 3 0) nil))))))
            2)
Execution error (ArithmeticException) at user/eval428$fn$f...
Divide by zero
user=> (take 2 (lazy-seq
                (cons 1 (lazy-seq
                                                 (cons 2 (lazy-seq
                                                          (cons (/ 3 0) nil)))))))
(1 2)

;;; Clojure
;; 最も基本的な高階関数map, filterさえ遅延シーケンスを返す
user=> (type (map inc (range 0 (inc 9))))
clojure.lang.LazySeq
user=> (type (filter odd? (range 0 (inc 9))))
clojure.lang.LazySeq
user=> (require '[clojure.java.io :as io])
nil
;; line-seqも遅延シーケンスを返すため実体化前にリソース解放するとエラー
user=> (with-open [r (io/reader "fibonacci.clj")]
         (->> r line-seq (take 3)))
Error printing return value (IOException) at java.io.Buffered
Reader/ensureOpen (BufferedReader.java:123).
Stream closed
user=> (with-open [r (io/reader "fibonacci.clj")]
         (->> r line-seq (take 3) doall))  ; doallで直ちに実体化
("(ns fibonacci)" "" "(defn fib [n]")

## Elixir: 言語の評価戦略は積極(正格)評価
# 関数の定義: call by value
iex(1)> defmodule Some do
...(1)>   def f(x, y) do
...(1)>     if x > 0, do: x, else: y
...(1)>   end
...(1)> end
{:module, Some, ...}
# 引数x, yは直ちに評価される
iex(2)> Some.f(1, 2 / 0)
** (ArithmeticError) bad argument in arithmetic expression...

## Elixir
# マクロの定義: call by name
iex(3)> defmodule Other do
...(3)>   defmacro g(x, y) do
...(3)>     quote do
...(3)>       if unquote(x) > 0,  # この場合、xは最大2回評価される
...(3)>         do: unquote(x), else: unquote(y)
...(3)>     end
...(3)>   end # (回避するには評価結果をローカル束縛(メモ化)して再利用)
...(3)> end
{:module, Other, ...}
iex(4)> require Other
Other
# 引数yにアクセスされなければエラーが生じない
iex(5)> Other.g(1, 2 / 0)
1
iex(6)> Other.g(0, 2 / 0)
** (ArithmeticError) bad argument in arithmetic expression...

## Elixir
# 無限に続く整数のストリームから先頭3要素を取り出す
iex(7)> Enum.take(Stream.from_index, 3)
[0, 1, 2]
# 3番目の要素にアクセスしなければエラーが生じない
iex(8)> 1..3 |> Stream.map(fn n -> if n < 3, do: n, else:
  n / 0 end) |> Enum.at(2)
** (ArithmeticError) bad argument in arithmetic expression...
iex(9)> 1..3 |> Stream.map(fn n -> if n < 3, do: n, else:
  n / 0 end) |> Enum.take(2)
[1, 2]

BONUS: (評価の制御といえば)マクロ

i.e. ASTレベルでのコンパイル時メタプログラミング

;;; Clojure
(defmacro apply-after [action-fn op & args]  ; マクロの定義
  (let [args (->> args
                  (map (juxt identity pr-str))
                  (map-indexed (fn [i [expr s]]
                                                         `(doto ~expr
                                                            (~action-fn ~i ~s)))))]
    `(~op ~@args)))
  • (op arg0 arg1 ...) の個々の引数 arg0, arg1, ...がオペレータ op に適用される前に関数 action-fn の呼び出しを差し込めるマクロ

;;; Clojure
user=> (defn inspect [v i s]
         (println (str "arg" i ":") s "=>" v))
#'user/inspect
user=> (apply-after inspect + (- 1 2 3) (* 4 5) (/ 6 7))
arg0: (- 1 2 3) => -4
arg1: (* 4 5) => 20
arg2: (/ 6 7) => 6/7
118/7  ; (+ (- 1 2 3) (* 4 5) (/ 6 7)) と等価
user=> (apply-after inspect if (odd? 2)
         (println :odd)
         (println :even))
arg0: (odd? 2) => false
:even  ; (println :even) による標準出力
arg2: (println :even) => nil
nil  ; (if (odd? 2) (println :odd) (println :even)) と等価

;;; Clojure
user=> (macroexpand-1  ; マクロ展開(1段階)
        '(apply-after inspect if (odd? 2)
           (println :odd)
           (println :even)))
(if (clojure.core/doto (odd? 2)
      (inspect 0 "(odd? 2)"))
  (clojure.core/doto (println :odd)
    (inspect 1 "(println :odd)"))
  (clojure.core/doto (println :even)
    (inspect 2 "(println :even)")))
nil

3-5. 🍷 ポリモーフィズム


functional programming concept map (patterns)


functional programming concept map (patterns - polymorphism)


  • ポリモーフィズム(多相/多態性)というと、オブジェクト指向言語での継承による仕組み(= サブタイプ多相の一例)が想起されやすいかもしれない

  • 関数型言語では異なる機構が提供されていることも多い

→ 簡潔に柔軟に関数の振る舞いをポリモーフィックにできると旨い😋


サブタイプ多相に関する仕組み

/* Scala */
scala> trait Solid:  // トレイトの定義
     |   def surfaceArea: Double
     |   def volume: Double
     |
// defined trait Solid
scala> case class Cuboid(  // トレイトSolidを実装したクラスの定義
     |   a: Double,
     |   b: Double,
     |   c: Double,
     | ) extends Solid:
     |   def surfaceArea: Double =
     |     2.0 * (a * b + b * c + c * a)
     |   def volume: Double =
     |     a * b * c

/* Scala */
scala> case class Sphere(r: Double) extends Solid:
     |   def surfaceArea: Double =
     |     4.0 * Math.PI * Math.pow(r, 2)
     |   def volume: Double =
     |     4.0 / 3.0 * Math.PI * Math.pow(r, 3)
scala> def solidProps(x: Solid): Map[String, Double] =
     |   Map(
     |     "surface area" -> x.surfaceArea,
     |     "volume" -> x.volume,
     |   )
     |
def solidProps(x: Solid): Map[String, Double]
scala> Seq(Cuboid(2, 3, 4), Sphere(2)).map(solidProps)
val res0: Seq[Map[String, Double]] = List(Map(surface area ->
  52.0, volume -> 24.0), Map(surface area ->
  50.26548245743669, volume -> 33.510321638291124))

アドホック多相に関する仕組み

{- Haskell -}
λ> :{
λ| class Solid a where  -- 型クラスの定義
λ|     surfaceArea :: a -> Double
λ|     volume :: a -> Double
λ| :}
type Solid :: Constraint
λ> :{
λ| data Cuboid = Cuboid
λ|     { a :: !Double
λ|     , b :: !Double
λ|     , c :: !Double }
λ|
λ| data Sphere = Sphere { r :: !Double }
λ| :}
type Cuboid :: *
...

{- Haskell -}
λ> :{
λ| instance Solid Cuboid where  -- 型クラスのインスタンスの定義
λ|     surfaceArea (Cuboid a b c) =
λ|         2 * (a * b + b * c + c * a)
λ|     volume (Cuboid a b c) =
λ|         a * b * c
λ|
λ| instance Solid Sphere where
λ|     surfaceArea (Sphere r) =
λ|         4 * pi * r ^ 2
λ|     volume (Sphere r) =
λ|         4 / 3 * pi * r ^ 3
λ| :}

{- Haskell -}
λ> import qualified Data.Map as M
λ> :{
λ| solidProps :: Solid a => a -> M.Map String Double
λ| solidProps x = M.fromList
λ|    [("surface area", surfaceArea x), ("volume", volume x)]
λ| :}
solidProps :: Solid a => a -> M.Map String Double
λ> solidProps $ Cuboid 2 3 4
fromList [("surface area",52.0),("volume",24.0)]
it :: M.Map String Double
λ> solidProps $ Sphere 2
fromList [("surface area",50.26548245743669),("volume",
  33.510321638291124)]
it :: M.Map String Double

/* Scala */
scala> trait Solid2[A]:  // 型クラスの定義
     |   extension (a: A)
     |     def surfaceArea: Double
     |     def volume: Double
     |
// defined trait Solid2
scala> case class Cuboid2(
     |   a: Double,
     |   b: Double,
     |   c: Double,
     | )
// defined case class Cuboid2
scala> case class Sphere2(r: Double)
// defined case class Sphere2

/* Scala */
scala> given Solid2[Cuboid2] with  // 型クラスのインスタンスの定義
     |   extension (x: Cuboid2)
     |     def surfaceArea: Double =
     |       2.0 * (x.a * x.b + x.b * x.c + x.c * x.a)
     |     def volume: Double =
     |       x.a * x.b * x.c
     | given Solid2[Sphere2] with
     |   extension (x: Sphere2)
     |     def surfaceArea: Double =
     |       4.0 * Math.PI * Math.pow(x.r, 2)
     |     def volume: Double =
     |       4.0 / 3.0 * Math.PI * Math.pow(x.r, 3)
// defined object given_Solid2_Cuboid2
// defined object given_Solid2_Sphere2

/* Scala */
scala> def solidProps[A: Solid2](x: A): Map[String, Double] =
     |   Map(
     |     "surface area" -> x.surfaceArea,
     |     "volume" -> x.volume,
     |   )
     |
def solidProps[A](x: A)(using evidence$1: Solid2[A]):
  Map[String, Double]
scala> solidProps(Cuboid2(2, 3, 4))
val res0: Map[String, Double] = Map(surface area -> 52.0,
  volume -> 24.0)
scala> solidProps(Sphere2(2))
val res1: Map[String, Double] = Map(surface area ->
  50.26548245743669, volume -> 33.510321638291124)

;;; Clojure
user=> (defprotocol Solid  ; プロトコルの定義
         (surface-area [this])
         (volume [this]))
Solid
user=> (defrecord Cuboid [a b c])
user.Cuboid
user=> (defrecord Sphere [r])
user.Sphere

;;; Clojure
user=> (extend-protocol Solid  ; プロトコルの実装
         Cuboid
         (surface-area [{:keys [a b c]}]
           (* 2 (+ (* a b)
                   (* b c)
                   (* c a))))
         (volume [{:keys [a b c]}]
           (* a b c))
         Sphere
         (surface-area [{:keys [r]}]
           (* 4 Math/PI (Math/pow r 2)))
         (volume [{:keys [r]}]
           (* 4/3 Math/PI (Math/pow r 3))))
nil

;;; Clojure
user=> (defn solid-props [x]
         {:surface-area (surface-area x)
          :volume (volume x)})
#'user/solid-props
user=> (solid-props (->Cuboid 2 3 4))
{:surface-area 52, :volume 24}
user=> (solid-props (->Sphere 2))
{:surface-area 50.26548245743669, :volume 33.51032163829112}

## Elixir
iex(1)> defprotocol Solid do  # プロトコルの定義
...(1)>   def surface_area(x)
...(1)>   def volume(x)
...(1)> end
{:module, Solid, ...}
iex(2)> defmodule Cuboid do
...(2)>   defstruct [:a, :b, :c]
...(2)> end
{:module, Cuboid, ...}
iex(3)> defmodule Sphere do
...(3)>   defstruct [:r]
...(3)> end
{:module, Sphere, ...}

## Elixir
iex(4)> defimpl Solid, for: Cuboid do  # プロトコルの実装
...(4)>   def surface_area(%Cuboid{a: a, b: b, c: c}) do
...(4)>     2 * (a * b + b * c + c * a)
...(4)>   end
...(4)>   def volume(%Cuboid{a: a, b: b, c: c}) do
...(4)>     a * b * c
...(4)>   end
...(4)> end
{:module, Solid.Cuboid, ...}
iex(5)> defimpl Solid, for: Sphere do
...(5)>   def surface_area(%Sphere{r: r}) do
...(5)>     4 * :math.pi() * r ** 2
...(5)>   end
...(5)>   def volume(%Sphere{r: r}) do
...(5)>     4 / 3 * :math.pi() * r ** 3
...(5)>   end
...(5)> end
{:module, Solid.Sphere, ...}

## Elixir
iex(6)> solid_props = fn x ->
...(6)>   %{
...(6)>     surface_area: Solid.surface_area(x),
...(6)>     volume: Solid.volume(x)
...(6)>   }
...(6)> end
#Function<42.81571850/1 in :erl_eval.expr/6>
iex(7)> solid_props.(%Cuboid{a: 2, b: 3, c: 4})
%{surface_area: 52, volume: 24}
iex(8)> solid_props.(%Sphere{r: 2})
%{
  surface_area: 50.26548245743669,
  volume: 33.510321638291124
}

パラメータ多相に関する仕組み

{- Haskell -}
λ> :t id  -- 関数idの型(type)は?
id :: a -> a  -- 型a
λ> id 42  -- idを数値に適用したとき
42
it :: Num a => a  -- 型クラスNumの制約付きの型a
λ> :t Just  -- 1引数の値コンストラクタJust
Just :: a -> Maybe a
λ> :t Just 42  -- Justを数値に適用したとき
Just 42 :: Num a => Maybe a
λ> :t Nothing  -- 0引数の値コンストラクタNothing
Nothing :: Maybe a
-- cf. 型Maybe aの定義(抜粋)
data Maybe a = Nothing | Just a

{- Haskell -}
λ> :k Maybe  -- 型コンストラクタMaybeのカインド(kind)は?
Maybe :: * -> *  -- 型レベルでの関数に相当
λ> :k Num a => Maybe a  -- Maybeを型aに適用したとき
Num a => Maybe a :: *  -- 型レベルでの値に相当
λ> :k Functor  -- 型クラスFunctor
Functor :: (* -> *) -> Constraint  -- 型レベルでの高階関数に相当
λ> :k Functor Maybe  -- FunctorをMaybeに適用したとき
Functor Maybe :: Constraint
-- cf. 型クラスFunctorの定義(抜粋)
class Functor f where
    fmap :: (a -> b) -> f a -> f b

型(type) カインド(kind)
値(value):
a
型(type):
*
関数(function)/値コンストラクタ(value constructor):
a -> b
型コンストラクタ(type constructor):
* -> *
高階関数(higher-order function):
(a -> b) -> f a -> f b
高カインド型(higher-kinded type):
(* -> *) -> *

/* Scala */
scala> [A] => (x: A) => identity(x)
val res0: [A] => (x: A) => A = Lambda/0x00002000015018d8@3...
scala> identity(42)
val res1: Int = 42
scala> [A] => (x: A) => Some(x)
val res2: [A] => (x: A) => Some[A] = Lambda/0x000020000150...
scala> val x: Option[Int] = Some(42)  // SomeはOptionの派生型
val x: Option[Int] = Some(42)
scala> val y: Option[Int] = None  // NoneはOptionの派生型
val y: Option[Int] = None
scala> val z: Option[Any] = x  // 型パラメータAは共変(covariant)
val z: Option[Any] = Some(42)
// cf. 関数identityの定義(抜粋)
def identity[A](x: A): A = x
// cf. 型Option[+A]の定義(抜粋)
sealed abstract class Option[+A] extends IterableOnce[A]
  with Product with Serializable
final case class Some[+A](value: A) extends Option[A]
case object None extends Option[Nothing]

/* Scala */
// 型クラスFunctorの定義
scala> trait Functor[F[_]]:
     |   extension [A](x: F[A])
     |     def fmap[B](f: A => B): F[B]
     |
// defined trait Functor
// Optionに対するインスタンスの定義
scala> given Functor[Option] with
     |   extension [A](x: Option[A])
     |     def fmap[B](f: A => B): Option[B] =
     |       x.map(f)
     |
// defined object given_Functor_Option
scala> (x, y)
val res3: (Option[Int], Option[Int]) = (Some(42),None)
scala> x.fmap(_ + 1)
val res4: Option[Int] = Some(43)
scala> y.fmap(_ + 1)
val res5: Option[Int] = None

4. 関数型プログラマの

メンタルモデル


functional programming concept map (values)


関数型言語使い/関数型プログラミング実践者の発想

  • ⛓️ 適切な制約が解放をもたらす
    • 引数に対して戻り値を返す以外のことをする関数は信頼できない😱 → 純粋関数を基本に
    • いつでもどこでも破壊的に更新できるデータ構造は怖い😱 → 不変/永続データを基本に
    • とりうる値が分からないのは不安😱 → 不正値を表現不能に、より(型)安全に
  • 🧱 単純で安定したブロックを基礎に全体を構成したい
    • → 式指向に、宣言的に、合成可能に

おわりに

  • Haskell, Scala, Clojure, Elixirを例に、関数型言語で楽しめる基本的な旨みについて探ってみた

  • 関数型プログラミングの本質、そこから導かれる不可欠な要素について考えるきっかけになれば幸い

関数型プログラミング(言語)と「関数型まつり」

引き続きぜひご賞味ください🍷


Further Reading

言語横断


Haskell


Scala


Clojure


Elixir & Erlang

Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
<?xml version="1.0" encoding="UTF-8"?>
<!-- Do not edit this file with editors other than draw.io -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" style="background: transparent; background-color: transparent; color-scheme: light dark;" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="762px" height="497px" viewBox="-0.5 -0.5 762 497" content="&lt;mxfile host=&quot;app.diagrams.net&quot; agent=&quot;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36&quot; version=&quot;27.0.9&quot; pages=&quot;6&quot; scale=&quot;1&quot; border=&quot;0&quot;&gt;&#10; &lt;diagram id=&quot;6a731a19-8d31-9384-78a2-239565b7b9f0&quot; name=&quot;overview&quot;&gt;&#10; &lt;mxGraphModel dx=&quot;2860&quot; dy=&quot;1600&quot; grid=&quot;1&quot; gridSize=&quot;10&quot; guides=&quot;1&quot; tooltips=&quot;1&quot; connect=&quot;1&quot; arrows=&quot;1&quot; fold=&quot;1&quot; page=&quot;1&quot; pageScale=&quot;1&quot; pageWidth=&quot;1169&quot; pageHeight=&quot;827&quot; background=&quot;none&quot; math=&quot;0&quot; shadow=&quot;0&quot;&gt;&#10; &lt;root&gt;&#10; &lt;mxCell id=&quot;0&quot; /&gt;&#10; &lt;mxCell id=&quot;1&quot; parent=&quot;0&quot; /&gt;&#10; &lt;mxCell id=&quot;1350&quot; value=&quot;重視する&amp;lt;div&amp;gt;もの&amp;lt;div&amp;gt;(values)&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&quot; style=&quot;ellipse;whiteSpace=wrap;html=1;shadow=0;fontFamily=Helvetica;fontSize=20;fontColor=#ffffff;align=center;strokeWidth=3;fillColor=#0050ef;strokeColor=#001DBC;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;397.5&quot; y=&quot;244&quot; width=&quot;120&quot; height=&quot;120&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1351&quot; value=&quot;言語&amp;lt;div&amp;gt;(languages)&amp;lt;/div&amp;gt;&quot; style=&quot;ellipse;whiteSpace=wrap;html=1;shadow=0;fontFamily=Helvetica;fontSize=20;fontColor=#ffffff;align=center;strokeWidth=3;fillColor=#008a00;strokeColor=#005700;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1082.5&quot; y=&quot;209&quot; width=&quot;120&quot; height=&quot;120&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1352&quot; value=&quot;処理系/実装&amp;lt;div&amp;gt;(implementations)&amp;lt;/div&amp;gt;&quot; style=&quot;ellipse;whiteSpace=wrap;html=1;shadow=0;fontFamily=Helvetica;fontSize=14;fontColor=#ffffff;align=center;strokeWidth=3;fillColor=#a20025;strokeColor=#6F0000;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1670&quot; y=&quot;584&quot; width=&quot;120&quot; height=&quot;120&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1356&quot; value=&quot;パターン&amp;lt;div&amp;gt;(patterns)&amp;lt;/div&amp;gt;&quot; style=&quot;ellipse;whiteSpace=wrap;html=1;shadow=0;fontFamily=Helvetica;fontSize=20;fontColor=#ffffff;align=center;strokeWidth=3;fillColor=#e51400;strokeColor=#B20000;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;730&quot; y=&quot;1127.5&quot; width=&quot;120&quot; height=&quot;120&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1357&quot; value=&quot;Lisp&quot; style=&quot;rounded=1;fillColor=#008a00;strokeColor=#005700;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;931&quot; y=&quot;341.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1358&quot; value=&quot;式指向&amp;lt;div&amp;gt;(expression-oriented)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#0050ef;strokeColor=#001DBC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;375&quot; y=&quot;415.5&quot; width=&quot;130&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1359&quot; style=&quot;endArrow=none;strokeWidth=6;strokeColor=#001DBC;html=1;fillColor=#0050ef;&quot; parent=&quot;1&quot; source=&quot;1515&quot; target=&quot;1350&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1360&quot; style=&quot;endArrow=none;strokeWidth=6;strokeColor=#005700;html=1;fillColor=#008a00;&quot; parent=&quot;1&quot; source=&quot;1515&quot; target=&quot;1351&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1361&quot; style=&quot;endArrow=none;strokeWidth=6;strokeColor=#6F0000;html=1;fillColor=#a20025;&quot; parent=&quot;1&quot; source=&quot;1515&quot; target=&quot;1352&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1363&quot; style=&quot;endArrow=none;strokeWidth=6;strokeColor=#3700CC;html=1;fillColor=#6a00ff;&quot; parent=&quot;1&quot; source=&quot;1515&quot; target=&quot;1516&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1366&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=6;strokeColor=#B20000;html=1;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;1515&quot; target=&quot;1356&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;181&quot; y=&quot;226.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;160&quot; y=&quot;294&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;260&quot; y=&quot;194&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1367&quot; value=&quot;不変性&amp;lt;div&amp;gt;(immutability)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#0050ef;strokeColor=#001DBC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;435&quot; y=&quot;142.5&quot; width=&quot;130&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1368&quot; value=&quot;宣言型プログラミング&amp;lt;div&amp;gt;(declarative programming)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#0050ef;strokeColor=#001DBC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=10;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;221&quot; y=&quot;342.5&quot; width=&quot;130&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1369&quot; value=&quot;(型)安全性&amp;lt;div&amp;gt;((type) safety)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#0050ef;strokeColor=#001DBC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;174&quot; y=&quot;204&quot; width=&quot;130&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1374&quot; value=&quot;合成可能性&amp;lt;div&amp;gt;(composability)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#0050ef;strokeColor=#001DBC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;270&quot; y=&quot;112.5&quot; width=&quot;130&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1375&quot; value=&quot;永続性&amp;lt;div&amp;gt;(persistence)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#0050ef;strokeColor=#001DBC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;447.5&quot; y=&quot;52.5&quot; width=&quot;130&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1376&quot; value=&quot;純粋性&amp;lt;div&amp;gt;(purity)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#0050ef;strokeColor=#001DBC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;537.5&quot; y=&quot;302.5&quot; width=&quot;130&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1377&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#001DBC;html=1;fillColor=#0050ef;&quot; parent=&quot;1&quot; source=&quot;1350&quot; target=&quot;1376&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-347.5&quot; y=&quot;129&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-247.5&quot; y=&quot;29&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1378&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#001DBC;html=1;fillColor=#0050ef;&quot; parent=&quot;1&quot; source=&quot;1350&quot; target=&quot;1367&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-347.5&quot; y=&quot;129&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-247.5&quot; y=&quot;29&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1379&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#001DBC;html=1;fillColor=#0050ef;&quot; parent=&quot;1&quot; source=&quot;1350&quot; target=&quot;1358&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-347.5&quot; y=&quot;129&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-247.5&quot; y=&quot;29&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1380&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#001DBC;html=1;fillColor=#0050ef;&quot; parent=&quot;1&quot; source=&quot;1350&quot; target=&quot;1368&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-347.5&quot; y=&quot;129&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-247.5&quot; y=&quot;29&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1381&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#001DBC;html=1;entryX=1;entryY=0.75;entryDx=0;entryDy=0;fillColor=#0050ef;&quot; parent=&quot;1&quot; source=&quot;1350&quot; target=&quot;1369&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-347.5&quot; y=&quot;129&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;334&quot; y=&quot;232.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1386&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#001DBC;html=1;fillColor=#0050ef;&quot; parent=&quot;1&quot; source=&quot;1350&quot; target=&quot;1374&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-347.5&quot; y=&quot;129&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-247.5&quot; y=&quot;29&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1387&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#001DBC;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fillColor=#0050ef;&quot; parent=&quot;1&quot; source=&quot;1367&quot; target=&quot;1375&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-347.5&quot; y=&quot;129&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-247.5&quot; y=&quot;29&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1388&quot; value=&quot;Clojure&quot; style=&quot;rounded=1;fillColor=#008a00;strokeColor=#005700;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;853.5&quot; y=&quot;227.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1389&quot; value=&quot;Erlang&quot; style=&quot;rounded=1;fillColor=#008a00;strokeColor=#005700;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;979&quot; y=&quot;157.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1390&quot; value=&quot;Elixir&quot; style=&quot;rounded=1;fillColor=#008a00;strokeColor=#005700;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;834&quot; y=&quot;107.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1395&quot; value=&quot;Haskell&quot; style=&quot;rounded=1;fillColor=#008a00;strokeColor=#005700;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1226.5&quot; y=&quot;169&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1396&quot; value=&quot;OCaml&quot; style=&quot;rounded=1;fillColor=#008a00;strokeColor=#005700;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1409&quot; y=&quot;270.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1397&quot; value=&quot;Standard ML&quot; style=&quot;rounded=1;fillColor=#008a00;strokeColor=#005700;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1299&quot; y=&quot;457.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1398&quot; value=&quot;ML&quot; style=&quot;rounded=1;fillColor=#008a00;strokeColor=#005700;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1239&quot; y=&quot;322.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1399&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;exitX=0.083;exitY=0.778;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#008a00;&quot; parent=&quot;1&quot; source=&quot;1351&quot; target=&quot;1357&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1076.4814583318957&quot; y=&quot;331.6784877878272&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;73.5&quot; y=&quot;33&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1400&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;fillColor=#008a00;&quot; parent=&quot;1&quot; source=&quot;1357&quot; target=&quot;1388&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-26.5&quot; y=&quot;133&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;73.5&quot; y=&quot;33&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1401&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fillColor=#008a00;&quot; parent=&quot;1&quot; source=&quot;1357&quot; target=&quot;1389&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-26.5&quot; y=&quot;133&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;73.5&quot; y=&quot;33&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1402&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fillColor=#008a00;&quot; parent=&quot;1&quot; source=&quot;1389&quot; target=&quot;1390&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-56.5&quot; y=&quot;129&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;43.5&quot; y=&quot;29&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1407&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;fillColor=#008a00;&quot; parent=&quot;1&quot; source=&quot;1398&quot; target=&quot;1395&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-17.5&quot; y=&quot;89&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;82.5&quot; y=&quot;-11&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1408&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;exitX=1;exitY=0;exitDx=0;exitDy=0;fillColor=#008a00;&quot; parent=&quot;1&quot; source=&quot;1398&quot; target=&quot;1396&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1379&quot; y=&quot;387.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;82.5&quot; y=&quot;-11&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1409&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;exitX=0.847;exitY=0.995;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#008a00;&quot; parent=&quot;1&quot; source=&quot;1398&quot; target=&quot;1397&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-17.5&quot; y=&quot;89&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;82.5&quot; y=&quot;-11&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1410&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;entryX=0;entryY=0;entryDx=0;entryDy=0;fillColor=#008a00;&quot; parent=&quot;1&quot; source=&quot;1351&quot; target=&quot;1398&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-17.5&quot; y=&quot;89&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1239&quot; y=&quot;297.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1411&quot; value=&quot;適用&amp;lt;div&amp;gt;(apply)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#a20025;strokeColor=#6F0000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1779&quot; y=&quot;709&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1413&quot; value=&quot;評価&amp;lt;div&amp;gt;(eval)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#a20025;strokeColor=#6F0000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1603&quot; y=&quot;734&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1414&quot; value=&quot;抽象構文木&amp;lt;div&amp;gt;(abstract syntax tree; AST)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#a20025;strokeColor=#6F0000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=10;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1709&quot; y=&quot;491&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1415&quot; value=&quot;マクロ&amp;lt;div&amp;gt;(macro)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#a20025;strokeColor=#6F0000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1769&quot; y=&quot;415.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1423&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#6F0000;html=1;fillColor=#a20025;&quot; parent=&quot;1&quot; source=&quot;1352&quot; target=&quot;1411&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;31&quot; y=&quot;106.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint y=&quot;434&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;100&quot; y=&quot;334&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1424&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#6F0000;html=1;fillColor=#a20025;&quot; parent=&quot;1&quot; source=&quot;1352&quot; target=&quot;1413&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;31&quot; y=&quot;106.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint y=&quot;434&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;100&quot; y=&quot;334&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1425&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#6F0000;html=1;exitX=0.627;exitY=0.022;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#a20025;&quot; parent=&quot;1&quot; source=&quot;1352&quot; target=&quot;1414&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;31&quot; y=&quot;106.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1831.6638188278903&quot; y=&quot;525.0995728241835&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;261&quot; y=&quot;224&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1426&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#6F0000;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#a20025;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1631&quot; target=&quot;1415&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;31&quot; y=&quot;106.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1720&quot; y=&quot;407.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;261&quot; y=&quot;224&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1439&quot; value=&quot;参照透過性&amp;lt;div&amp;gt;(referential transparency)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#0050ef;strokeColor=#001DBC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=10;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;572.5&quot; y=&quot;232.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1490&quot; value=&quot;再帰&amp;lt;div&amp;gt;(recursion)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;670&quot; y=&quot;927.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1491&quot; value=&quot;遅延評価&amp;lt;div&amp;gt;(lazy evaluation)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;540&quot; y=&quot;947.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1492&quot; value=&quot;メモ化&amp;lt;div&amp;gt;(memoization)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;395&quot; y=&quot;967.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1493&quot; value=&quot;並行プログラミング&amp;lt;div&amp;gt;(concurrent programming)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=10;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;528.5&quot; y=&quot;1127.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1494&quot; value=&quot;アクターモデル&amp;lt;div&amp;gt;(actor model)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;369&quot; y=&quot;1034&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1495&quot; value=&quot;STM&amp;lt;div&amp;gt;(software transactional&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp;memory)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=10;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;408.5&quot; y=&quot;1217.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1496&quot; value=&quot;CSP&amp;lt;div&amp;gt;(communicating sequential&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;span style=&amp;quot;background-color: transparent; color: light-dark(rgb(255, 255, 255), rgb(18, 18, 18));&amp;quot;&amp;gt;&amp;amp;nbsp;processes)&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=8;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;331&quot; y=&quot;1119&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1497&quot; value=&quot;継続&amp;lt;div&amp;gt;(continuation)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;797.5&quot; y=&quot;874&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1498&quot; value=&quot;高階関数&amp;lt;div&amp;gt;(higher-order function)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=10;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;199&quot; y=&quot;1404&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1499&quot; value=&quot;関数合成&amp;lt;div&amp;gt;(function composition)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;395&quot; y=&quot;1414&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1500&quot; value=&quot;カリー化&amp;lt;div&amp;gt;(currying)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;677.5&quot; y=&quot;1467.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1501&quot; value=&quot;部分適用&amp;lt;div&amp;gt;(partial application)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;548.5&quot; y=&quot;1404&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1502&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0.875;exitY=0.988;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1552&quot; target=&quot;1501&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;539&quot; y=&quot;1377.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;158.5&quot; y=&quot;25.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1503&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1550&quot; target=&quot;1490&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;539&quot; y=&quot;1001&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;167.5&quot; y=&quot;-7.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1504&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1549&quot; target=&quot;1491&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;419&quot; y=&quot;971&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;167.5&quot; y=&quot;-7.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1505&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0;exitY=0;exitDx=0;exitDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1549&quot; target=&quot;1492&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;543&quot; y=&quot;1001&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;341.5&quot; y=&quot;12.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1506&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;1356&quot; target=&quot;1493&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;341.5&quot; y=&quot;139&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;441.5&quot; y=&quot;39&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1507&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0;exitY=0;exitDx=0;exitDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;1493&quot; target=&quot;1494&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;341.5&quot; y=&quot;139&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;441.5&quot; y=&quot;39&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1508&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;1493&quot; target=&quot;1495&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;341.5&quot; y=&quot;139&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;441.5&quot; y=&quot;39&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1509&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;1493&quot; target=&quot;1496&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;341.5&quot; y=&quot;139&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;449&quot; y=&quot;1247.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1510&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0.75;exitY=0;exitDx=0;exitDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1550&quot; target=&quot;1497&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;609&quot; y=&quot;1021&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;167.5&quot; y=&quot;-7.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1511&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0;exitY=1;exitDx=0;exitDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1552&quot; target=&quot;1498&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;389&quot; y=&quot;1387.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;158.5&quot; y=&quot;25.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1512&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0.401;exitY=1.013;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1552&quot; target=&quot;1499&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;58.5&quot; y=&quot;125.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;158.5&quot; y=&quot;25.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1513&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;1501&quot; target=&quot;1500&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;58.5&quot; y=&quot;125.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;158.5&quot; y=&quot;25.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1514&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.75;exitY=0;entryX=0.75;entryY=0;startArrow=none;startFill=0;endArrow=block;endFill=1;jettySize=auto;orthogonalLoop=1;strokeColor=#6F0000;strokeWidth=6;fontSize=20;fontColor=#2F5B7C;fillColor=#a20025;&quot; parent=&quot;1&quot; source=&quot;1414&quot; target=&quot;1414&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1515&quot; value=&quot;&amp;lt;span style=&amp;quot;&amp;quot;&amp;gt;関数型&amp;lt;/span&amp;gt;&amp;lt;div&amp;gt;&amp;lt;span style=&amp;quot;&amp;quot;&amp;gt;プログラミング&amp;lt;/span&amp;gt;&amp;lt;div&amp;gt;&amp;lt;span style=&amp;quot;&amp;quot;&amp;gt;(functional programming)&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&quot; style=&quot;ellipse;whiteSpace=wrap;html=1;shadow=0;fontFamily=Helvetica;fontSize=30;align=center;strokeWidth=6;fontStyle=1;verticalAlign=middle;labelBackgroundColor=none;textShadow=0;fillColor=#b0e3e6;strokeColor=#0e8088;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;923&quot; y=&quot;600.5&quot; width=&quot;270&quot; height=&quot;270&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1516&quot; value=&quot;理論&amp;lt;div&amp;gt;(theories)&amp;lt;/div&amp;gt;&quot; style=&quot;ellipse;whiteSpace=wrap;html=1;shadow=0;fontFamily=Helvetica;fontSize=20;fontColor=#ffffff;align=center;strokeWidth=3;fillColor=#6a00ff;strokeColor=#3700CC;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;328&quot; y=&quot;667.25&quot; width=&quot;120&quot; height=&quot;120&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1518&quot; value=&quot;数学&amp;lt;div&amp;gt;(mathematics)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#6a00ff;strokeColor=#3700CC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;412&quot; y=&quot;622.25&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1519&quot; value=&quot;圏論&amp;lt;div&amp;gt;(category theory)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#6a00ff;strokeColor=#3700CC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;312&quot; y=&quot;542.25&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1520&quot; value=&quot;型システム&amp;lt;div&amp;gt;(type system)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#6a00ff;strokeColor=#3700CC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;201&quot; y=&quot;812.25&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1521&quot; value=&quot;ラムダ計算&amp;lt;div&amp;gt;(lambda calculus)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#6a00ff;strokeColor=#3700CC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;480&quot; y=&quot;755.75&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1530&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;fillColor=#6a00ff;&quot; parent=&quot;1&quot; source=&quot;1516&quot; target=&quot;1518&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-1493&quot; y=&quot;-252.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-1393&quot; y=&quot;-352.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1531&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;exitX=0.12;exitY=0.014;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#6a00ff;&quot; parent=&quot;1&quot; source=&quot;1518&quot; target=&quot;1519&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-1482&quot; y=&quot;-257.75&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-1382&quot; y=&quot;-357.75&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1532&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;fillColor=#6a00ff;&quot; parent=&quot;1&quot; source=&quot;1516&quot; target=&quot;1520&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-1482&quot; y=&quot;-257.75&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-1382&quot; y=&quot;-357.75&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1533&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;fillColor=#6a00ff;&quot; parent=&quot;1&quot; source=&quot;1516&quot; target=&quot;1521&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-1493&quot; y=&quot;-252.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-1393&quot; y=&quot;-352.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;1542&quot; style=&quot;edgeStyle=none;rounded=0;html=1;exitX=0.5;exitY=1;endArrow=none;endFill=0;jettySize=auto;orthogonalLoop=1;strokeColor=#3700CC;strokeWidth=2;fillColor=#6a00ff;fontSize=20;fontColor=#23445D;&quot; parent=&quot;1&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;153&quot; y=&quot;717.25&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;153&quot; y=&quot;717.25&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;104TM-tIM6dC0J846HSY-1542&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#001DBC;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fillColor=#0050ef;&quot; parent=&quot;1&quot; source=&quot;1376&quot; target=&quot;1439&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;435&quot; y=&quot;364.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;380&quot; y=&quot;449.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1542&quot; value=&quot;メタプログラミング&amp;lt;div&amp;gt;(metaprogramming)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#a20025;strokeColor=#6F0000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1850&quot; y=&quot;565.75&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1543&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#6F0000;html=1;exitX=0.961;exitY=0.26;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#a20025;&quot; parent=&quot;1&quot; source=&quot;1352&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1542&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;31&quot; y=&quot;106.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1872.2800000000002&quot; y=&quot;476.6399999999999&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1830&quot; y=&quot;570&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1544&quot; value=&quot;形式手法&amp;lt;div&amp;gt;(formal methods)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#6a00ff;strokeColor=#3700CC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;196&quot; y=&quot;645.75&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1545&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fillColor=#6a00ff;&quot; parent=&quot;1&quot; source=&quot;1516&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1544&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;266&quot; y=&quot;735.75&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-1531.5&quot; y=&quot;-212.75&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1546&quot; value=&quot;定理証明支援系&amp;lt;div&amp;gt;(theorem prover)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#6a00ff;strokeColor=#3700CC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;41&quot; y=&quot;795.75&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1547&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;exitX=0.171;exitY=-0.004;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#6a00ff;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1594&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1546&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;106&quot; y=&quot;905.75&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-1531.5&quot; y=&quot;-92.25&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1549&quot; value=&quot;評価&amp;lt;div&amp;gt;(evaluation)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;557.5&quot; y=&quot;1039&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1550&quot; value=&quot;制御&amp;lt;div&amp;gt;(control)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;720&quot; y=&quot;1007.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1552&quot; value=&quot;関数&amp;lt;div&amp;gt;(function)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;420&quot; y=&quot;1314&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1553&quot; value=&quot;パイプ演算子&amp;lt;div&amp;gt;(pipe operator)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;380&quot; y=&quot;1484&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1554&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;1499&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1553&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;513.5&quot; y=&quot;1445.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;430&quot; y=&quot;1454&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1556&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.029;exitY=0.677;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;1356&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1552&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;599&quot; y=&quot;1217.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;973&quot; y=&quot;1390&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1557&quot; value=&quot;メソッドチェーン&amp;lt;div&amp;gt;(method chaining)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;opacity=50;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;558.5&quot; y=&quot;1524&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1559&quot; value=&quot;&amp;lt;div&amp;gt;代数的データ型&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;(algebraic data type; ADT)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=10;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1060&quot; y=&quot;1322.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1560&quot; value=&quot;&amp;lt;div&amp;gt;パターンマッチ&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;(pattern matching)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1208&quot; y=&quot;1267.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1561&quot; value=&quot;クロージャー/関数閉包&amp;lt;div&amp;gt;(closure)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=10;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;610&quot; y=&quot;1334&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1562&quot; value=&quot;オブジェクト&amp;lt;div&amp;gt;(object)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;opacity=50;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;839&quot; y=&quot;1494&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1563&quot; value=&quot;Idris&quot; style=&quot;rounded=1;fillColor=#008a00;strokeColor=#005700;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1314&quot; y=&quot;20&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1564&quot; value=&quot;Elm&quot; style=&quot;rounded=1;fillColor=#008a00;strokeColor=#005700;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1164&quot; y=&quot;40&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1565&quot; value=&quot;パーサーコンビネーター&amp;lt;div&amp;gt;(parser combinator)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#a20025;strokeColor=#6F0000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=10;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1509&quot; y=&quot;455.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1568&quot; value=&quot;離散数学&amp;lt;div&amp;gt;(discrete mathematics)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#6a00ff;strokeColor=#3700CC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=10;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;506&quot; y=&quot;542.25&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1570&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;exitX=0.65;exitY=0.048;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitPerimeter=0;fillColor=#6a00ff;&quot; parent=&quot;1&quot; source=&quot;1518&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1568&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;353.5&quot; y=&quot;603&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;503.5&quot; y=&quot;561&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1572&quot; value=&quot;契約プログラミング&amp;lt;div&amp;gt;(contract programming)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#6a00ff;strokeColor=#3700CC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=10;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;30.5&quot; y=&quot;622.25&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1573&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1552&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1561&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;540&quot; y=&quot;1264.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;650&quot; y=&quot;1260.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1575&quot; value=&quot;&amp;lt;div&amp;gt;抽象データ型&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;(abstract data type)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1009&quot; y=&quot;1387.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1576&quot; value=&quot;&amp;lt;div&amp;gt;データ&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;(data)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;839&quot; y=&quot;1329&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1577&quot; value=&quot;直和型&amp;lt;div&amp;gt;(sum type)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1164&quot; y=&quot;1397.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1578&quot; value=&quot;直積型&amp;lt;br&amp;gt;&amp;lt;div&amp;gt;(product type)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1319&quot; y=&quot;1377.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1579&quot; value=&quot;篩型&amp;lt;div&amp;gt;(refinement type)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#6a00ff;strokeColor=#3700CC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;40&quot; y=&quot;698.75&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1580&quot; value=&quot;依存型&amp;lt;div&amp;gt;(dependent type)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#6a00ff;strokeColor=#3700CC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;20&quot; y=&quot;892.25&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1581&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fillColor=#008a00;&quot; parent=&quot;1&quot; source=&quot;1388&quot; target=&quot;1390&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;974&quot; y=&quot;177.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;850&quot; y=&quot;197.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1582&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;fillColor=#008a00;&quot; parent=&quot;1&quot; source=&quot;1395&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1564&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1114&quot; y=&quot;70&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1463.5&quot; y=&quot;131.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1583&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.396;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#008a00;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1694&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1563&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1246&quot; y=&quot;100&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1321&quot; y=&quot;140&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1584&quot; value=&quot;&amp;lt;div&amp;gt;カプセル化&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;(encapsulation)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;opacity=50;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1159&quot; y=&quot;1454&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1585&quot; value=&quot;ポリモーフィズム/多相&amp;lt;div&amp;gt;(polymorphism)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=10;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;979&quot; y=&quot;977.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1586&quot; value=&quot;サブタイプ多相&amp;lt;div&amp;gt;(subtype polymorphism)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=10;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1299&quot; y=&quot;1074&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1587&quot; value=&quot;パラメータ多相&amp;lt;div&amp;gt;(parametric polymorphism)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=10;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1208&quot; y=&quot;977.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1588&quot; value=&quot;アドホック多相&amp;lt;div&amp;gt;(ad hoc polymorphism)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=10;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1249&quot; y=&quot;887.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1589&quot; value=&quot;型クラス&amp;lt;div&amp;gt;(type class)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1229&quot; y=&quot;754.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1590&quot; value=&quot;マルチメソッド&amp;lt;div&amp;gt;(multimethod)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1449&quot; y=&quot;817.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1591&quot; value=&quot;プロトコル&amp;lt;div&amp;gt;(protocol)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1493&quot; y=&quot;887.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1592&quot; value=&quot;変性&amp;lt;div&amp;gt;(variance)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1469&quot; y=&quot;1039&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1593&quot; value=&quot;継承&amp;lt;div&amp;gt;(inheritance)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;opacity=50;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1479&quot; y=&quot;1137.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1594&quot; value=&quot;カリー=ハワード同型対応&amp;lt;div&amp;gt;(Curry–Howard&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp;correspondence)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#6a00ff;strokeColor=#3700CC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=8;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;185&quot; y=&quot;942.25&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1595&quot; value=&quot;&amp;lt;div&amp;gt;分配束縛&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;(destructuring)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1349&quot; y=&quot;1247.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1596&quot; value=&quot;&amp;lt;div&amp;gt;純粋関数型データ構造&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;(purely functional&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp;data structure)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=10;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;959&quot; y=&quot;1057.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1597&quot; value=&quot;&amp;lt;div&amp;gt;永続データ構造&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;(persistent data structure)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=10;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;869&quot; y=&quot;1196&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1598&quot; value=&quot;Coq (Rocq)&quot; style=&quot;rounded=1;fillColor=#008a00;strokeColor=#005700;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1450&quot; y=&quot;192&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1599&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fillColor=#008a00;&quot; parent=&quot;1&quot; source=&quot;1396&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1598&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1580&quot; y=&quot;352&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1616&quot; y=&quot;192&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1600&quot; value=&quot;Scala&quot; style=&quot;rounded=1;fillColor=#008a00;strokeColor=#005700;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1138&quot; y=&quot;474&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1601&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;entryX=0.25;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fillColor=#008a00;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1600&quot; target=&quot;1398&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1271&quot; y=&quot;609&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1307&quot; y=&quot;449&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1602&quot; value=&quot;構文解析&amp;lt;div&amp;gt;(parse)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#a20025;strokeColor=#6F0000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1539&quot; y=&quot;537.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1603&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#6F0000;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.044;entryY=0.296;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#a20025;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1602&quot; target=&quot;1352&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;31&quot; y=&quot;106.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1879&quot; y=&quot;702.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1679&quot; y=&quot;577.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1604&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0;exitY=0;exitDx=0;exitDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;1356&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1549&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;729&quot; y=&quot;1097.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;636&quot; y=&quot;1164.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1605&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;1356&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1550&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;737&quot; y=&quot;1214.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;646&quot; y=&quot;1174.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1606&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0;exitY=0;exitDx=0;exitDy=0;entryX=0.648;entryY=0.975;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1576&quot; target=&quot;1356&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;747&quot; y=&quot;1224.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;656&quot; y=&quot;1184.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1607&quot; value=&quot;オーバーロード/多重定義&amp;lt;div&amp;gt;(overloading)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=10;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1399&quot; y=&quot;749&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1608&quot; value=&quot;命令型プログラミング&amp;lt;div&amp;gt;(imperative programming)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#0050ef;strokeColor=#001DBC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fillStyle=solid;glass=0;opacity=50;fontSize=10;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;20&quot; y=&quot;366.5&quot; width=&quot;130&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1609&quot; value=&quot;文指向&amp;lt;div&amp;gt;(statement-oriented)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#0050ef;strokeColor=#001DBC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fillStyle=solid;glass=0;opacity=50;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;185&quot; y=&quot;455.5&quot; width=&quot;130&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1610&quot; value=&quot;副作用&amp;lt;div&amp;gt;(side effect)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#0050ef;strokeColor=#001DBC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fillStyle=solid;glass=0;opacity=50;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;720&quot; y=&quot;295.5&quot; width=&quot;130&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1612&quot; value=&quot;破壊的更新&amp;lt;div&amp;gt;(mutation)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#0050ef;strokeColor=#001DBC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fillStyle=solid;glass=0;opacity=50;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;644&quot; y=&quot;162.5&quot; width=&quot;130&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1613&quot; value=&quot;可変性&amp;lt;div&amp;gt;(mutability)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#0050ef;strokeColor=#001DBC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fillStyle=solid;glass=0;opacity=50;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;615&quot; y=&quot;82.5&quot; width=&quot;130&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1614&quot; value=&quot;pipes &amp;amp;amp; filters&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;358.5&quot; y=&quot;1554&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1615&quot; value=&quot;goroutines &amp;amp;amp; channels&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;opacity=50;fontSize=10;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;149&quot; y=&quot;1097.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1616&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;entryX=0.972;entryY=0.373;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0;exitY=1;exitDx=0;exitDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1585&quot; target=&quot;1356&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;893&quot; y=&quot;1187.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;831&quot; y=&quot;1259.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1617&quot; value=&quot;&amp;lt;div&amp;gt;プロパティベーステスト&amp;lt;/div&amp;gt;(property-based testing)&quot; style=&quot;rounded=1;fillColor=#6a00ff;strokeColor=#3700CC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=10;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;116&quot; y=&quot;525.75&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1618&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=classic;strokeWidth=3;strokeColor=#001DBC;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;startArrow=classic;startFill=1;endFill=1;opacity=50;fillColor=#0050ef;&quot; parent=&quot;1&quot; source=&quot;1368&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1608&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;408&quot; y=&quot;315.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;344&quot; y=&quot;317.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1619&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=classic;strokeWidth=3;strokeColor=#001DBC;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;startArrow=classic;startFill=1;endFill=1;opacity=50;fillColor=#0050ef;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1613&quot; target=&quot;1367&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;214&quot; y=&quot;319.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;154&quot; y=&quot;312.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1620&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=classic;strokeWidth=3;strokeColor=#001DBC;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;startArrow=classic;startFill=1;endFill=1;opacity=50;fillColor=#0050ef;&quot; parent=&quot;1&quot; source=&quot;1358&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1609&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;224&quot; y=&quot;329.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;164&quot; y=&quot;322.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1621&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=classic;strokeWidth=3;strokeColor=#001DBC;html=1;startArrow=classic;startFill=1;endFill=1;opacity=50;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#0050ef;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1610&quot; target=&quot;1376&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;720&quot; y=&quot;387.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;639&quot; y=&quot;367.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1622&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#001DBC;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;opacity=50;fillColor=#0050ef;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1612&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1610&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;525&quot; y=&quot;329.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;752.77&quot; y=&quot;400.1999999999998&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1623&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#001DBC;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.43;exitY=-0.023;exitDx=0;exitDy=0;exitPerimeter=0;opacity=50;fillColor=#0050ef;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1612&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1613&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;535&quot; y=&quot;339.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;573&quot; y=&quot;350.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1624&quot; value=&quot;入出力&amp;lt;div&amp;gt;(I/O)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#0050ef;strokeColor=#001DBC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fillStyle=solid;glass=0;opacity=50;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;745&quot; y=&quot;394.5&quot; width=&quot;130&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1625&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#001DBC;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;opacity=50;fillColor=#0050ef;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1624&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1610&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;838&quot; y=&quot;299.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;864&quot; y=&quot;404.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1626&quot; value=&quot;&amp;lt;div&amp;gt;データ指向プログラミング&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;(data-oriented programming)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=8;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;869&quot; y=&quot;1427.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1627&quot; value=&quot;ファンクター&amp;lt;div&amp;gt;(functor)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;979&quot; y=&quot;1257.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1628&quot; value=&quot;モナド&amp;lt;div&amp;gt;(monad)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1289&quot; y=&quot;1177.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1629&quot; value=&quot;リスト&amp;lt;div&amp;gt;(list)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;989&quot; y=&quot;1127.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1630&quot; value=&quot;遅延リスト/ストリーム&amp;lt;div&amp;gt;(lazy list/stream)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=10;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1129&quot; y=&quot;1087.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1631&quot; value=&quot;同図像性&amp;lt;div&amp;gt;(homoiconicity)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#a20025;strokeColor=#6F0000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1799&quot; y=&quot;335.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1632&quot; value=&quot;超循環評価器&amp;lt;div&amp;gt;(meta-circular evaluator)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#a20025;strokeColor=#6F0000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=10;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1709&quot; y=&quot;807.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1633&quot; value=&quot;セルフホスティング&amp;lt;div&amp;gt;(self-hosting)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#a20025;strokeColor=#6F0000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1732.5&quot; y=&quot;874&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1634&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0;entryDx=0;entryDy=0;opacity=50;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1561&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1562&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;832&quot; y=&quot;1319.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1087&quot; y=&quot;1309.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1635&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;opacity=50;entryX=0;entryY=0;entryDx=0;entryDy=0;exitX=1;exitY=1;exitDx=0;exitDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1575&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1584&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1119&quot; y=&quot;1467.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1159&quot; y=&quot;1467.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1636&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;entryX=0.25;entryY=0;entryDx=0;entryDy=0;opacity=50;exitX=1;exitY=0.75;exitDx=0;exitDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1586&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1593&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1359&quot; y=&quot;1117.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1528&quot; y=&quot;1314&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1637&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0.371;exitY=0.989;exitDx=0;exitDy=0;opacity=50;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;1496&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1615&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1213&quot; y=&quot;1259.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;309&quot; y=&quot;1097.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1639&quot; value=&quot;ベクター&amp;lt;div&amp;gt;(vector)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1138&quot; y=&quot;1147.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1640&quot; value=&quot;全域関数&amp;lt;div&amp;gt;(total function)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;255&quot; y=&quot;1307.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1641&quot; value=&quot;部分関数&amp;lt;div&amp;gt;(partial function)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;69&quot; y=&quot;1297.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1642&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=classic;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;endFill=1;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1640&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1641&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;309&quot; y=&quot;1151&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;304&quot; y=&quot;1231&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1643&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1552&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1640&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;489&quot; y=&quot;1346&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;368&quot; y=&quot;1444&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1644&quot; value=&quot;&amp;lt;div&amp;gt;オブジェクト指向プログラミング&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;(object-oriented&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp;programming)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=8;opacity=50;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1289&quot; y=&quot;1554&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1645&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;opacity=50;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1562&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1644&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1132&quot; y=&quot;1434.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1129&quot; y=&quot;1557.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1646&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=classic;strokeWidth=3;strokeColor=#B20000;html=1;opacity=50;startArrow=classic;startFill=1;endFill=1;entryX=0;entryY=0;entryDx=0;entryDy=0;exitX=1;exitY=1;exitDx=0;exitDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1626&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1644&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1009&quot; y=&quot;1487.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1179&quot; y=&quot;1527.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1648&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0;exitY=0.25;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1592&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1587&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1449&quot; y=&quot;1007.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1349&quot; y=&quot;1037.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1649&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1592&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1586&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1549&quot; y=&quot;1274&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1453&quot; y=&quot;1269&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1650&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;opacity=50;exitX=1;exitY=1;exitDx=0;exitDy=0;entryX=0.333;entryY=-0.012;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1584&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1644&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1309&quot; y=&quot;1487.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1349&quot; y=&quot;1507.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1651&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;entryX=0.93;entryY=-0.004;entryDx=0;entryDy=0;opacity=50;entryPerimeter=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1593&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1644&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1519&quot; y=&quot;1237.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1609&quot; y=&quot;1472.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1652&quot; value=&quot;アプリカティブ&amp;lt;br&amp;gt;&amp;lt;div&amp;gt;(applicative)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1113&quot; y=&quot;1208.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1653&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0.924;exitY=1.032;exitDx=0;exitDy=0;entryX=0;entryY=0;entryDx=0;entryDy=0;opacity=50;exitPerimeter=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;1499&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1557&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;610&quot; y=&quot;1494&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;701&quot; y=&quot;1514&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1654&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;opacity=50;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1557&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1644&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1119&quot; y=&quot;1547.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1210&quot; y=&quot;1567.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1655&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1553&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1614&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;604&quot; y=&quot;1514&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;640&quot; y=&quot;1544&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1656&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=1;entryDx=0;entryDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1575&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1576&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1127.5&quot; y=&quot;1359.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1031.5&quot; y=&quot;1354.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1657&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1586&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1585&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1222&quot; y=&quot;1279&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1213&quot; y=&quot;1057.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1658&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1587&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1585&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;947&quot; y=&quot;1284.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;851&quot; y=&quot;1279.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1659&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1588&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1585&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;783&quot; y=&quot;1274.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;687&quot; y=&quot;1269.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1660&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.674;entryY=0.12;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1559&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1576&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1031.5&quot; y=&quot;1306&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;935.5&quot; y=&quot;1301&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1661&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.95;entryY=0.925;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1578&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1559&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;942&quot; y=&quot;1409.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1189&quot; y=&quot;1367.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1662&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.65;entryY=0.925;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1577&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1559&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1088&quot; y=&quot;1112.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1058&quot; y=&quot;1179.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1663&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1626&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1576&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1058&quot; y=&quot;1392.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;969&quot; y=&quot;1379.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1664&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.889;entryY=0.043;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1560&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1559&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1247&quot; y=&quot;1319.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1162&quot; y=&quot;1333.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1665&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1595&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1560&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1319&quot; y=&quot;1217.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1148&quot; y=&quot;1315.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1666&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0.421;exitY=0.911;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.358;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1589&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1588&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1329&quot; y=&quot;904.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1249&quot; y=&quot;867.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1667&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1590&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1588&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1328&quot; y=&quot;914&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1389&quot; y=&quot;837.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1668&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1591&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1588&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1442&quot; y=&quot;914.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1419&quot; y=&quot;917.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1669&quot; value=&quot;トレイト&amp;lt;div&amp;gt;(trait)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1649&quot; y=&quot;977.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1670&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1669&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1588&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1319&quot; y=&quot;1027.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1419&quot; y=&quot;947.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1673&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1607&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1588&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1419&quot; y=&quot;917.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1269&quot; y=&quot;944.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1674&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1597&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1576&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;849&quot; y=&quot;1359.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;796&quot; y=&quot;1354.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1675&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0.183;exitY=0.959;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitPerimeter=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1596&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1597&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1003&quot; y=&quot;1187.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1073&quot; y=&quot;1107.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1676&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1627&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;923&quot; y=&quot;1246.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;919&quot; y=&quot;1327.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1677&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1652&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1627&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1003&quot; y=&quot;1276.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1049&quot; y=&quot;1217.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1678&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1628&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1652&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1013&quot; y=&quot;1286.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;939&quot; y=&quot;1347.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1679&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#6F0000;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fillColor=#a20025;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1565&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1602&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;31&quot; y=&quot;106.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1409&quot; y=&quot;783&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1469&quot; y=&quot;686&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1680&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#6F0000;html=1;exitX=0.611;exitY=0.03;exitDx=0;exitDy=0;entryX=0.421;entryY=0.941;entryDx=0;entryDy=0;entryPerimeter=0;exitPerimeter=0;fillColor=#a20025;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1632&quot; target=&quot;1411&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;31&quot; y=&quot;106.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1833&quot; y=&quot;847.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1819&quot; y=&quot;794.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1681&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#6F0000;html=1;exitX=0.373;exitY=0.03;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitPerimeter=0;fillColor=#a20025;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1632&quot; target=&quot;1413&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;31&quot; y=&quot;106.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1843&quot; y=&quot;857.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1829&quot; y=&quot;804.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1682&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#6F0000;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fillColor=#a20025;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1632&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1633&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;31&quot; y=&quot;106.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1792&quot; y=&quot;818.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1840&quot; y=&quot;756.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1683&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#6F0000;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;fillColor=#a20025;&quot; parent=&quot;1&quot; source=&quot;1414&quot; target=&quot;1415&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;31&quot; y=&quot;106.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1744&quot; y=&quot;387.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1727&quot; y=&quot;437.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1684&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#6F0000;html=1;entryX=0.75;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fillColor=#a20025;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1542&quot; target=&quot;1415&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;31&quot; y=&quot;106.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1910&quot; y=&quot;550&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1790&quot; y=&quot;467.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1685&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;entryX=0.846;entryY=-0.002;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0;exitY=0.75;exitDx=0;exitDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1629&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1597&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;979&quot; y=&quot;1147.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;939&quot; y=&quot;1206.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1686&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;entryX=0.75;entryY=0;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1630&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1629&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1109&quot; y=&quot;1067.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;949&quot; y=&quot;1216.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1687&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1639&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1597&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;992&quot; y=&quot;1147.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1019&quot; y=&quot;1197.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1688&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.365;exitY=1.014;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#6a00ff;&quot; parent=&quot;1&quot; source=&quot;1520&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1594&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;220&quot; y=&quot;902.25&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;186&quot; y=&quot;965.75&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1689&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;fillColor=#6a00ff;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1544&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1546&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;362&quot; y=&quot;868.75&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;336&quot; y=&quot;915.75&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1690&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.25;exitDx=0;exitDy=0;fillColor=#6a00ff;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1544&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1572&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;166&quot; y=&quot;705.75&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;216&quot; y=&quot;935.75&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1691&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;fillColor=#6a00ff;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1544&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1617&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;226&quot; y=&quot;725.75&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;187&quot; y=&quot;692.75&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1692&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.75;exitDx=0;exitDy=0;fillColor=#6a00ff;&quot; parent=&quot;1&quot; source=&quot;1520&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1580&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;256&quot; y=&quot;875.75&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;247&quot; y=&quot;955.75&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1693&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;exitX=0;exitY=0.25;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;fillColor=#6a00ff;&quot; parent=&quot;1&quot; source=&quot;1520&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1579&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;372&quot; y=&quot;885.75&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;166&quot; y=&quot;745.75&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1694&quot; value=&quot;Agda&quot; style=&quot;rounded=1;fillColor=#008a00;strokeColor=#005700;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1306.5&quot; y=&quot;90&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1696&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;exitX=0.659;exitY=0.004;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.338;entryY=0.988;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#008a00;&quot; parent=&quot;1&quot; source=&quot;1395&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1694&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1358&quot; y=&quot;160&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1359&quot; y=&quot;147.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1698&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fillColor=#6a00ff;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1579&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1572&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;256&quot; y=&quot;725.75&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;206&quot; y=&quot;632.75&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1699&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;exitX=0.37;exitY=0.941;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitPerimeter=0;fillColor=#6a00ff;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1546&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1580&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;126&quot; y=&quot;735.75&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;101&quot; y=&quot;672.75&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1701&quot; value=&quot;必要呼び&amp;lt;div&amp;gt;(call by need)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;428.5&quot; y=&quot;887.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1702&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0.427;exitY=-0.039;exitDx=0;exitDy=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;exitPerimeter=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;1492&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1701&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;568&quot; y=&quot;1049.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;505&quot; y=&quot;1017.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1703&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;1491&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1701&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;578&quot; y=&quot;1059.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;515&quot; y=&quot;1027.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1705&quot; value=&quot;F#&quot; style=&quot;rounded=1;fillColor=#008a00;strokeColor=#005700;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1459&quot; y=&quot;354.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1706&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.355;entryY=0.057;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#008a00;&quot; parent=&quot;1&quot; source=&quot;1396&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1705&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1380&quot; y=&quot;337.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1425&quot; y=&quot;320.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1708&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;opacity=50;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1669&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1644&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1563&quot; y=&quot;1237.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1459&quot; y=&quot;1547.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1710&quot; value=&quot;ジェネリクス&amp;lt;div&amp;gt;(generics)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=10;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1359&quot; y=&quot;967.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1711&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1710&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1587&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1479&quot; y=&quot;1059.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1338&quot; y=&quot;1017.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1713&quot; value=&quot;Lean&quot; style=&quot;rounded=1;fillColor=#008a00;strokeColor=#005700;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1472.5&quot; y=&quot;110.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1714&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fillColor=#008a00;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1598&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1713&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1479&quot; y=&quot;280.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1520&quot; y=&quot;242.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1715&quot; value=&quot;Gleam&quot; style=&quot;rounded=1;fillColor=#008a00;strokeColor=#005700;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;940&quot; y=&quot;47.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1716&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fillColor=#008a00;&quot; parent=&quot;1&quot; source=&quot;1389&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1715&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;989&quot; y=&quot;187.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;938&quot; y=&quot;157.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1717&quot; value=&quot;末尾再帰&amp;lt;div&amp;gt;(tail recursion)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;647.5&quot; y=&quot;834&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1718&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;1490&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1717&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;749&quot; y=&quot;1017.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;708&quot; y=&quot;927.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1719&quot; value=&quot;意味論&amp;lt;div&amp;gt;(semantics)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#6a00ff;strokeColor=#3700CC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;369&quot; y=&quot;817.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1720&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fillColor=#6a00ff;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1719&quot; target=&quot;1516&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;455&quot; y=&quot;754.75&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;349&quot; y=&quot;797.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1722&quot; value=&quot;型推論&amp;lt;div&amp;gt;(type inference)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#6a00ff;strokeColor=#3700CC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=12;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;271&quot; y=&quot;882.25&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1723&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryX=0.663;entryY=0.943;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#6a00ff;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1722&quot; target=&quot;1520&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;241&quot; y=&quot;862.25&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;255&quot; y=&quot;952.25&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;g_zntv2-W1YXb7UKMUbM-1724&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;entryX=0.375;entryY=0.056;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.583;exitY=0.985;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#6a00ff;&quot; parent=&quot;1&quot; source=&quot;g_zntv2-W1YXb7UKMUbM-1544&quot; target=&quot;1520&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;289&quot; y=&quot;737.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;216&quot; y=&quot;575.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;k_8f8I8uwc8qDodmXgQi-1542&quot; value=&quot;再帰型&amp;lt;br&amp;gt;&amp;lt;div&amp;gt;(recursive type)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1279&quot; y=&quot;1322.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;k_8f8I8uwc8qDodmXgQi-1543&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#B20000;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e51400;&quot; parent=&quot;1&quot; source=&quot;k_8f8I8uwc8qDodmXgQi-1542&quot; target=&quot;g_zntv2-W1YXb7UKMUbM-1559&quot; edge=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1338&quot; y=&quot;1402.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1199&quot; y=&quot;1357.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;/root&gt;&#10; &lt;/mxGraphModel&gt;&#10; &lt;/diagram&gt;&#10; &lt;diagram id=&quot;7GjV1zY66CA6TgeWYnzv&quot; name=&quot;values&quot;&gt;&#10; &lt;mxGraphModel dx=&quot;1430&quot; dy=&quot;800&quot; grid=&quot;1&quot; gridSize=&quot;10&quot; guides=&quot;1&quot; tooltips=&quot;1&quot; connect=&quot;1&quot; arrows=&quot;1&quot; fold=&quot;1&quot; page=&quot;1&quot; pageScale=&quot;1&quot; pageWidth=&quot;827&quot; pageHeight=&quot;1169&quot; math=&quot;0&quot; shadow=&quot;0&quot;&gt;&#10; &lt;root&gt;&#10; &lt;mxCell id=&quot;0&quot; /&gt;&#10; &lt;mxCell id=&quot;1&quot; parent=&quot;0&quot; /&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-1&quot; value=&quot;重視する&amp;lt;div&amp;gt;もの&amp;lt;div&amp;gt;(values)&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&quot; style=&quot;ellipse;whiteSpace=wrap;html=1;shadow=0;fontFamily=Helvetica;fontSize=20;align=center;strokeWidth=3;fillColor=#0050ef;strokeColor=#001DBC;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;397.5&quot; y=&quot;211.5&quot; width=&quot;120&quot; height=&quot;120&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-2&quot; value=&quot;式指向&amp;lt;div&amp;gt;(expression-oriented)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#0050ef;strokeWidth=3;shadow=0;html=1;strokeColor=#001DBC;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;375&quot; y=&quot;383&quot; width=&quot;130&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-3&quot; value=&quot;不変性&amp;lt;div&amp;gt;(immutability)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#0050ef;strokeWidth=3;shadow=0;html=1;strokeColor=#001DBC;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;435&quot; y=&quot;110&quot; width=&quot;130&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-4&quot; value=&quot;宣言型プログラミング&amp;lt;div&amp;gt;(declarative programming)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#0050ef;strokeWidth=3;shadow=0;html=1;fontSize=10;strokeColor=#001DBC;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;221&quot; y=&quot;310&quot; width=&quot;130&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-5&quot; value=&quot;(型)安全性&amp;lt;div&amp;gt;((type) safety)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#0050ef;strokeWidth=3;shadow=0;html=1;strokeColor=#001DBC;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;174&quot; y=&quot;171.5&quot; width=&quot;130&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-6&quot; value=&quot;合成可能性&amp;lt;div&amp;gt;(composability)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#0050ef;strokeWidth=3;shadow=0;html=1;strokeColor=#001DBC;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;270&quot; y=&quot;80&quot; width=&quot;130&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-7&quot; value=&quot;永続性&amp;lt;div&amp;gt;(persistence)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#0050ef;strokeWidth=3;shadow=0;html=1;strokeColor=#001DBC;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;447.5&quot; y=&quot;20&quot; width=&quot;130&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-8&quot; value=&quot;純粋性&amp;lt;div&amp;gt;(purity)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#0050ef;strokeWidth=3;shadow=0;html=1;strokeColor=#001DBC;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;537.5&quot; y=&quot;270&quot; width=&quot;130&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-9&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;fillColor=#0050ef;strokeColor=#001DBC;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;Joycs8_ug899hR5Gx5RF-1&quot; target=&quot;Joycs8_ug899hR5Gx5RF-8&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-347.5&quot; y=&quot;96.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-247.5&quot; y=&quot;-3.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-10&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;fillColor=#0050ef;strokeColor=#001DBC;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;Joycs8_ug899hR5Gx5RF-1&quot; target=&quot;Joycs8_ug899hR5Gx5RF-3&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-347.5&quot; y=&quot;96.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-247.5&quot; y=&quot;-3.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-11&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;fillColor=#0050ef;strokeColor=#001DBC;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;Joycs8_ug899hR5Gx5RF-1&quot; target=&quot;Joycs8_ug899hR5Gx5RF-2&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-347.5&quot; y=&quot;96.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-247.5&quot; y=&quot;-3.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-12&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;fillColor=#0050ef;strokeColor=#001DBC;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;Joycs8_ug899hR5Gx5RF-1&quot; target=&quot;Joycs8_ug899hR5Gx5RF-4&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-347.5&quot; y=&quot;96.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-247.5&quot; y=&quot;-3.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-13&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;entryX=1;entryY=0.75;entryDx=0;entryDy=0;fillColor=#0050ef;strokeColor=#001DBC;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;Joycs8_ug899hR5Gx5RF-1&quot; target=&quot;Joycs8_ug899hR5Gx5RF-5&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-347.5&quot; y=&quot;96.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;334&quot; y=&quot;200&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-14&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;fillColor=#0050ef;strokeColor=#001DBC;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;Joycs8_ug899hR5Gx5RF-1&quot; target=&quot;Joycs8_ug899hR5Gx5RF-6&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-347.5&quot; y=&quot;96.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-247.5&quot; y=&quot;-3.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-15&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fillColor=#0050ef;strokeColor=#001DBC;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;Joycs8_ug899hR5Gx5RF-3&quot; target=&quot;Joycs8_ug899hR5Gx5RF-7&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-347.5&quot; y=&quot;96.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-247.5&quot; y=&quot;-3.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-18&quot; value=&quot;参照透過性&amp;lt;div&amp;gt;(referential transparency)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#0050ef;strokeWidth=3;shadow=0;html=1;fontSize=10;strokeColor=#001DBC;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;572.5&quot; y=&quot;200&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-19&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fillColor=#0050ef;strokeColor=#001DBC;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;Joycs8_ug899hR5Gx5RF-8&quot; target=&quot;Joycs8_ug899hR5Gx5RF-18&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;435&quot; y=&quot;332&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;380&quot; y=&quot;417&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-21&quot; value=&quot;命令型プログラミング&amp;lt;div&amp;gt;(imperative programming)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#0050ef;strokeColor=#001DBC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fillStyle=solid;glass=0;opacity=50;fontSize=10;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;20&quot; y=&quot;334&quot; width=&quot;130&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-22&quot; value=&quot;文指向&amp;lt;div&amp;gt;(statement-oriented)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#0050ef;strokeColor=#001DBC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fillStyle=solid;glass=0;opacity=50;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;185&quot; y=&quot;423&quot; width=&quot;130&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-23&quot; value=&quot;副作用&amp;lt;div&amp;gt;(side effect)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#0050ef;strokeColor=#001DBC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fillStyle=solid;glass=0;opacity=50;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;720&quot; y=&quot;263&quot; width=&quot;130&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-24&quot; value=&quot;破壊的更新&amp;lt;div&amp;gt;(mutation)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#0050ef;strokeColor=#001DBC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fillStyle=solid;glass=0;opacity=50;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;644&quot; y=&quot;130&quot; width=&quot;130&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-25&quot; value=&quot;可変性&amp;lt;div&amp;gt;(mutability)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#0050ef;strokeColor=#001DBC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fillStyle=solid;glass=0;opacity=50;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;615&quot; y=&quot;50&quot; width=&quot;130&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-26&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=classic;strokeWidth=3;strokeColor=#001DBC;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;startArrow=classic;startFill=1;endFill=1;opacity=50;fillColor=#0050ef;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;Joycs8_ug899hR5Gx5RF-4&quot; target=&quot;Joycs8_ug899hR5Gx5RF-21&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;408&quot; y=&quot;283&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;344&quot; y=&quot;285&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-27&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=classic;strokeWidth=3;strokeColor=#001DBC;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;startArrow=classic;startFill=1;endFill=1;opacity=50;fillColor=#0050ef;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;Joycs8_ug899hR5Gx5RF-25&quot; target=&quot;Joycs8_ug899hR5Gx5RF-3&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;214&quot; y=&quot;287&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;154&quot; y=&quot;280&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-28&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=classic;strokeWidth=3;strokeColor=#001DBC;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;startArrow=classic;startFill=1;endFill=1;opacity=50;fillColor=#0050ef;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;Joycs8_ug899hR5Gx5RF-2&quot; target=&quot;Joycs8_ug899hR5Gx5RF-22&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;224&quot; y=&quot;297&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;164&quot; y=&quot;290&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-29&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=classic;strokeWidth=3;strokeColor=#001DBC;html=1;startArrow=classic;startFill=1;endFill=1;opacity=50;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#0050ef;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;Joycs8_ug899hR5Gx5RF-23&quot; target=&quot;Joycs8_ug899hR5Gx5RF-8&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;720&quot; y=&quot;355&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;639&quot; y=&quot;335&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-30&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#001DBC;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;opacity=50;fillColor=#0050ef;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;Joycs8_ug899hR5Gx5RF-24&quot; target=&quot;Joycs8_ug899hR5Gx5RF-23&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;525&quot; y=&quot;297&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;752.77&quot; y=&quot;367.6999999999998&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-31&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#001DBC;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.43;exitY=-0.023;exitDx=0;exitDy=0;exitPerimeter=0;opacity=50;fillColor=#0050ef;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;Joycs8_ug899hR5Gx5RF-24&quot; target=&quot;Joycs8_ug899hR5Gx5RF-25&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;535&quot; y=&quot;307&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;573&quot; y=&quot;318&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-32&quot; value=&quot;入出力&amp;lt;div&amp;gt;(I/O)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#0050ef;strokeColor=#001DBC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fillStyle=solid;glass=0;opacity=50;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;745&quot; y=&quot;362&quot; width=&quot;130&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;Joycs8_ug899hR5Gx5RF-33&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#001DBC;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;opacity=50;fillColor=#0050ef;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;Joycs8_ug899hR5Gx5RF-32&quot; target=&quot;Joycs8_ug899hR5Gx5RF-23&quot;&gt;&#10; &lt;mxGeometry x=&quot;-221.5&quot; y=&quot;56.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;838&quot; y=&quot;267&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;864&quot; y=&quot;372&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;/root&gt;&#10; &lt;/mxGraphModel&gt;&#10; &lt;/diagram&gt;&#10; &lt;diagram id=&quot;rgVbSLadaGzoN0AkvaVN&quot; name=&quot;languages&quot;&gt;&#10; &lt;mxGraphModel dx=&quot;1430&quot; dy=&quot;800&quot; grid=&quot;1&quot; gridSize=&quot;10&quot; guides=&quot;1&quot; tooltips=&quot;1&quot; connect=&quot;1&quot; arrows=&quot;1&quot; fold=&quot;1&quot; page=&quot;1&quot; pageScale=&quot;1&quot; pageWidth=&quot;827&quot; pageHeight=&quot;1169&quot; math=&quot;0&quot; shadow=&quot;0&quot;&gt;&#10; &lt;root&gt;&#10; &lt;mxCell id=&quot;0&quot; /&gt;&#10; &lt;mxCell id=&quot;1&quot; parent=&quot;0&quot; /&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-1&quot; value=&quot;言語&amp;lt;div&amp;gt;(languages)&amp;lt;/div&amp;gt;&quot; style=&quot;ellipse;whiteSpace=wrap;html=1;shadow=0;fontFamily=Helvetica;fontSize=20;fontColor=#ffffff;align=center;strokeWidth=3;fillColor=#008a00;strokeColor=#005700;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;264.5&quot; y=&quot;209&quot; width=&quot;120&quot; height=&quot;120&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-2&quot; value=&quot;Lisp&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;113&quot; y=&quot;341.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-3&quot; value=&quot;Clojure&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;35.5&quot; y=&quot;227.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-4&quot; value=&quot;Erlang&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;161&quot; y=&quot;157.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-5&quot; value=&quot;Elixir&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;16&quot; y=&quot;107.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-6&quot; value=&quot;Haskell&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;408.5&quot; y=&quot;169&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-7&quot; value=&quot;OCaml&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;591&quot; y=&quot;270.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-8&quot; value=&quot;Standard ML&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;481&quot; y=&quot;457.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-9&quot; value=&quot;ML&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;421&quot; y=&quot;322.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-10&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;exitX=0.083;exitY=0.778;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#008a00;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;epnklWbwfDs_07GPxRn5-1&quot; target=&quot;epnklWbwfDs_07GPxRn5-2&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;258.48145833189574&quot; y=&quot;331.6784877878272&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-744.5&quot; y=&quot;33&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-11&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;fillColor=#008a00;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;epnklWbwfDs_07GPxRn5-2&quot; target=&quot;epnklWbwfDs_07GPxRn5-3&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-844.5&quot; y=&quot;133&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-744.5&quot; y=&quot;33&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-12&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fillColor=#008a00;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;epnklWbwfDs_07GPxRn5-2&quot; target=&quot;epnklWbwfDs_07GPxRn5-4&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-844.5&quot; y=&quot;133&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-744.5&quot; y=&quot;33&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-13&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fillColor=#008a00;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;epnklWbwfDs_07GPxRn5-4&quot; target=&quot;epnklWbwfDs_07GPxRn5-5&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-874.5&quot; y=&quot;129&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-774.5&quot; y=&quot;29&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-14&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;fillColor=#008a00;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;epnklWbwfDs_07GPxRn5-9&quot; target=&quot;epnklWbwfDs_07GPxRn5-6&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-835.5&quot; y=&quot;89&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-735.5&quot; y=&quot;-11&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-15&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;exitX=1;exitY=0;exitDx=0;exitDy=0;fillColor=#008a00;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;epnklWbwfDs_07GPxRn5-9&quot; target=&quot;epnklWbwfDs_07GPxRn5-7&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;561&quot; y=&quot;387.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-735.5&quot; y=&quot;-11&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-16&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;exitX=0.847;exitY=0.995;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#008a00;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;epnklWbwfDs_07GPxRn5-9&quot; target=&quot;epnklWbwfDs_07GPxRn5-8&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-835.5&quot; y=&quot;89&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-735.5&quot; y=&quot;-11&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-17&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;entryX=0;entryY=0;entryDx=0;entryDy=0;fillColor=#008a00;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;epnklWbwfDs_07GPxRn5-1&quot; target=&quot;epnklWbwfDs_07GPxRn5-9&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-835.5&quot; y=&quot;89&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;421&quot; y=&quot;297.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-18&quot; value=&quot;Idris&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;496&quot; y=&quot;20&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-19&quot; value=&quot;Elm&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;346&quot; y=&quot;40&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-21&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fillColor=#008a00;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;epnklWbwfDs_07GPxRn5-3&quot; target=&quot;epnklWbwfDs_07GPxRn5-5&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;156&quot; y=&quot;177.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;32&quot; y=&quot;197.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-22&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;fillColor=#008a00;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;epnklWbwfDs_07GPxRn5-6&quot; target=&quot;epnklWbwfDs_07GPxRn5-19&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;296&quot; y=&quot;70&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;645.5&quot; y=&quot;131.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-23&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.396;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#008a00;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;epnklWbwfDs_07GPxRn5-28&quot; target=&quot;epnklWbwfDs_07GPxRn5-18&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;428&quot; y=&quot;100&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;503&quot; y=&quot;140&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-24&quot; value=&quot;Coq (Rocq)&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;632&quot; y=&quot;192&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-25&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fillColor=#008a00;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;epnklWbwfDs_07GPxRn5-7&quot; target=&quot;epnklWbwfDs_07GPxRn5-24&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;762&quot; y=&quot;352&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;798&quot; y=&quot;192&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-26&quot; value=&quot;Scala&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;320&quot; y=&quot;474&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-27&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;entryX=0.25;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fillColor=#008a00;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;epnklWbwfDs_07GPxRn5-26&quot; target=&quot;epnklWbwfDs_07GPxRn5-9&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;453&quot; y=&quot;609&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;489&quot; y=&quot;449&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-28&quot; value=&quot;Agda&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;488.5&quot; y=&quot;90&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-29&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;exitX=0.659;exitY=0.004;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.338;entryY=0.988;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#008a00;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;epnklWbwfDs_07GPxRn5-6&quot; target=&quot;epnklWbwfDs_07GPxRn5-28&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;540&quot; y=&quot;160&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;541&quot; y=&quot;147.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-30&quot; value=&quot;F#&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;641&quot; y=&quot;354.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-31&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.355;entryY=0.057;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#008a00;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;epnklWbwfDs_07GPxRn5-7&quot; target=&quot;epnklWbwfDs_07GPxRn5-30&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;562&quot; y=&quot;337.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;607&quot; y=&quot;320.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-32&quot; value=&quot;Lean&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;654.5&quot; y=&quot;110.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-33&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fillColor=#008a00;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;epnklWbwfDs_07GPxRn5-24&quot; target=&quot;epnklWbwfDs_07GPxRn5-32&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;661&quot; y=&quot;280.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;702&quot; y=&quot;242.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-34&quot; value=&quot;Gleam&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;122&quot; y=&quot;47.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;epnklWbwfDs_07GPxRn5-35&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#005700;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fillColor=#008a00;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;epnklWbwfDs_07GPxRn5-4&quot; target=&quot;epnklWbwfDs_07GPxRn5-34&quot;&gt;&#10; &lt;mxGeometry x=&quot;3.5&quot; y=&quot;21.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;171&quot; y=&quot;187.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;120&quot; y=&quot;157.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;/root&gt;&#10; &lt;/mxGraphModel&gt;&#10; &lt;/diagram&gt;&#10; &lt;diagram id=&quot;RVdT8WjKzlmfdi0ELhk6&quot; name=&quot;theories&quot;&gt;&#10; &lt;mxGraphModel dx=&quot;1430&quot; dy=&quot;800&quot; grid=&quot;1&quot; gridSize=&quot;10&quot; guides=&quot;1&quot; tooltips=&quot;1&quot; connect=&quot;1&quot; arrows=&quot;1&quot; fold=&quot;1&quot; page=&quot;1&quot; pageScale=&quot;1&quot; pageWidth=&quot;827&quot; pageHeight=&quot;1169&quot; math=&quot;0&quot; shadow=&quot;0&quot;&gt;&#10; &lt;root&gt;&#10; &lt;mxCell id=&quot;0&quot; /&gt;&#10; &lt;mxCell id=&quot;1&quot; parent=&quot;0&quot; /&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-2&quot; value=&quot;理論&amp;lt;div&amp;gt;(theories)&amp;lt;/div&amp;gt;&quot; style=&quot;ellipse;whiteSpace=wrap;html=1;shadow=0;fontFamily=Helvetica;fontSize=20;fontColor=#ffffff;align=center;strokeWidth=3;fillColor=#6a00ff;strokeColor=#3700CC;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;328&quot; y=&quot;161.5&quot; width=&quot;120&quot; height=&quot;120&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-3&quot; value=&quot;数学&amp;lt;div&amp;gt;(mathematics)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#6a00ff;strokeColor=#3700CC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;412&quot; y=&quot;116.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-4&quot; value=&quot;圏論&amp;lt;div&amp;gt;(category theory)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#6a00ff;strokeColor=#3700CC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;312&quot; y=&quot;36.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-5&quot; value=&quot;型システム&amp;lt;div&amp;gt;(type system)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#6a00ff;strokeColor=#3700CC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;201&quot; y=&quot;306.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-6&quot; value=&quot;ラムダ計算&amp;lt;div&amp;gt;(lambda calculus)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#6a00ff;strokeColor=#3700CC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;480&quot; y=&quot;250&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-7&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;fillColor=#6a00ff;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;ZVeqOh5WZwzVstH3eJTq-2&quot; target=&quot;ZVeqOh5WZwzVstH3eJTq-3&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-1493&quot; y=&quot;-758.25&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-1393&quot; y=&quot;-858.25&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-8&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;exitX=0.12;exitY=0.014;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#6a00ff;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;ZVeqOh5WZwzVstH3eJTq-3&quot; target=&quot;ZVeqOh5WZwzVstH3eJTq-4&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-1482&quot; y=&quot;-763.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-1382&quot; y=&quot;-863.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-9&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;fillColor=#6a00ff;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;ZVeqOh5WZwzVstH3eJTq-2&quot; target=&quot;ZVeqOh5WZwzVstH3eJTq-5&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-1482&quot; y=&quot;-763.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-1382&quot; y=&quot;-863.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-10&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;fillColor=#6a00ff;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;ZVeqOh5WZwzVstH3eJTq-2&quot; target=&quot;ZVeqOh5WZwzVstH3eJTq-6&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-1493&quot; y=&quot;-758.25&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-1393&quot; y=&quot;-858.25&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-11&quot; style=&quot;edgeStyle=none;rounded=0;html=1;exitX=0.5;exitY=1;endArrow=none;endFill=0;jettySize=auto;orthogonalLoop=1;strokeColor=#3700CC;strokeWidth=2;fillColor=#6a00ff;fontSize=20;fontColor=#23445D;&quot; edge=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;153&quot; y=&quot;211.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;153&quot; y=&quot;211.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-12&quot; value=&quot;形式手法&amp;lt;div&amp;gt;(formal methods)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#6a00ff;strokeColor=#3700CC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;196&quot; y=&quot;140&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-13&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fillColor=#6a00ff;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;ZVeqOh5WZwzVstH3eJTq-2&quot; target=&quot;ZVeqOh5WZwzVstH3eJTq-12&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;266&quot; y=&quot;230&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-1531.5&quot; y=&quot;-718.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-14&quot; value=&quot;定理証明支援系&amp;lt;div&amp;gt;(theorem prover)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#6a00ff;strokeColor=#3700CC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;41&quot; y=&quot;290&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-15&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;exitX=0.171;exitY=-0.004;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#6a00ff;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;ZVeqOh5WZwzVstH3eJTq-21&quot; target=&quot;ZVeqOh5WZwzVstH3eJTq-14&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;106&quot; y=&quot;400&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-1531.5&quot; y=&quot;-598&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-16&quot; value=&quot;離散数学&amp;lt;div&amp;gt;(discrete mathematics)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#6a00ff;strokeColor=#3700CC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=10;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;506&quot; y=&quot;36.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-17&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;exitX=0.65;exitY=0.048;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitPerimeter=0;fillColor=#6a00ff;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;ZVeqOh5WZwzVstH3eJTq-3&quot; target=&quot;ZVeqOh5WZwzVstH3eJTq-16&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;353.5&quot; y=&quot;97.25&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;503.5&quot; y=&quot;55.25&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-18&quot; value=&quot;契約プログラミング&amp;lt;div&amp;gt;(contract programming)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#6a00ff;strokeColor=#3700CC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=10;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;30.5&quot; y=&quot;116.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-19&quot; value=&quot;篩型&amp;lt;div&amp;gt;(refinement type)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#6a00ff;strokeColor=#3700CC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;40&quot; y=&quot;193&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-20&quot; value=&quot;依存型&amp;lt;div&amp;gt;(dependent type)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#6a00ff;strokeColor=#3700CC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;20&quot; y=&quot;386.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-21&quot; value=&quot;カリー=ハワード同型対応&amp;lt;div&amp;gt;(Curry–Howard&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp;correspondence)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#6a00ff;strokeColor=#3700CC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=8;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;185&quot; y=&quot;436.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-22&quot; value=&quot;&amp;lt;div&amp;gt;プロパティベーステスト&amp;lt;/div&amp;gt;(property-based testing)&quot; style=&quot;rounded=1;fillColor=#6a00ff;strokeColor=#3700CC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=10;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;116&quot; y=&quot;20&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-23&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.365;exitY=1.014;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#6a00ff;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;ZVeqOh5WZwzVstH3eJTq-5&quot; target=&quot;ZVeqOh5WZwzVstH3eJTq-21&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;220&quot; y=&quot;396.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;186&quot; y=&quot;460&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-24&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;fillColor=#6a00ff;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;ZVeqOh5WZwzVstH3eJTq-12&quot; target=&quot;ZVeqOh5WZwzVstH3eJTq-14&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;362&quot; y=&quot;363&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;336&quot; y=&quot;410&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-25&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.25;exitDx=0;exitDy=0;fillColor=#6a00ff;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;ZVeqOh5WZwzVstH3eJTq-12&quot; target=&quot;ZVeqOh5WZwzVstH3eJTq-18&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;166&quot; y=&quot;200&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;216&quot; y=&quot;430&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-26&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;fillColor=#6a00ff;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;ZVeqOh5WZwzVstH3eJTq-12&quot; target=&quot;ZVeqOh5WZwzVstH3eJTq-22&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;226&quot; y=&quot;220&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;187&quot; y=&quot;187&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-27&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.75;exitDx=0;exitDy=0;fillColor=#6a00ff;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;ZVeqOh5WZwzVstH3eJTq-5&quot; target=&quot;ZVeqOh5WZwzVstH3eJTq-20&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;256&quot; y=&quot;370&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;247&quot; y=&quot;450&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-28&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;exitX=0;exitY=0.25;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;fillColor=#6a00ff;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;ZVeqOh5WZwzVstH3eJTq-5&quot; target=&quot;ZVeqOh5WZwzVstH3eJTq-19&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;372&quot; y=&quot;380&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;166&quot; y=&quot;240&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-29&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fillColor=#6a00ff;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;ZVeqOh5WZwzVstH3eJTq-19&quot; target=&quot;ZVeqOh5WZwzVstH3eJTq-18&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;256&quot; y=&quot;220&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;206&quot; y=&quot;127&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-30&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;exitX=0.37;exitY=0.941;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitPerimeter=0;fillColor=#6a00ff;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;ZVeqOh5WZwzVstH3eJTq-14&quot; target=&quot;ZVeqOh5WZwzVstH3eJTq-20&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;126&quot; y=&quot;230&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;101&quot; y=&quot;167&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-34&quot; value=&quot;意味論&amp;lt;div&amp;gt;(semantics)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#6a00ff;strokeColor=#3700CC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;369&quot; y=&quot;311.75&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-35&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fillColor=#6a00ff;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;ZVeqOh5WZwzVstH3eJTq-34&quot; target=&quot;ZVeqOh5WZwzVstH3eJTq-2&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;455&quot; y=&quot;249&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;349&quot; y=&quot;291.75&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-36&quot; value=&quot;型推論&amp;lt;div&amp;gt;(type inference)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#6a00ff;strokeColor=#3700CC;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=12;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;271&quot; y=&quot;376.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-37&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryX=0.663;entryY=0.943;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#6a00ff;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;ZVeqOh5WZwzVstH3eJTq-36&quot; target=&quot;ZVeqOh5WZwzVstH3eJTq-5&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;241&quot; y=&quot;356.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;255&quot; y=&quot;446.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;ZVeqOh5WZwzVstH3eJTq-38&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#3700CC;html=1;entryX=0.375;entryY=0.056;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.583;exitY=0.985;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#6a00ff;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;ZVeqOh5WZwzVstH3eJTq-12&quot; target=&quot;ZVeqOh5WZwzVstH3eJTq-5&quot;&gt;&#10; &lt;mxGeometry x=&quot;-1498&quot; y=&quot;-303.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;289&quot; y=&quot;231.75&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;216&quot; y=&quot;69.75&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;/root&gt;&#10; &lt;/mxGraphModel&gt;&#10; &lt;/diagram&gt;&#10; &lt;diagram id=&quot;8eiECjzYA-vTRluNzHKj&quot; name=&quot;implementations&quot;&gt;&#10; &lt;mxGraphModel dx=&quot;1426&quot; dy=&quot;800&quot; grid=&quot;1&quot; gridSize=&quot;10&quot; guides=&quot;1&quot; tooltips=&quot;1&quot; connect=&quot;1&quot; arrows=&quot;1&quot; fold=&quot;1&quot; page=&quot;1&quot; pageScale=&quot;1&quot; pageWidth=&quot;827&quot; pageHeight=&quot;1169&quot; math=&quot;0&quot; shadow=&quot;0&quot;&gt;&#10; &lt;root&gt;&#10; &lt;mxCell id=&quot;0&quot; /&gt;&#10; &lt;mxCell id=&quot;1&quot; parent=&quot;0&quot; /&gt;&#10; &lt;mxCell id=&quot;dCD0Xy3-YmJP2L3WlvO0-1&quot; value=&quot;処理系/実装&amp;lt;div&amp;gt;(implementations)&amp;lt;/div&amp;gt;&quot; style=&quot;ellipse;whiteSpace=wrap;html=1;shadow=0;fontFamily=Helvetica;fontSize=14;fontColor=#ffffff;align=center;strokeWidth=3;fillColor=#a20025;strokeColor=#6F0000;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;181&quot; y=&quot;268.5&quot; width=&quot;120&quot; height=&quot;120&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;dCD0Xy3-YmJP2L3WlvO0-2&quot; value=&quot;適用&amp;lt;div&amp;gt;(apply)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#a20025;strokeColor=#6F0000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;290&quot; y=&quot;393.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;dCD0Xy3-YmJP2L3WlvO0-3&quot; value=&quot;評価&amp;lt;div&amp;gt;(eval)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#a20025;strokeColor=#6F0000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;114&quot; y=&quot;418.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;dCD0Xy3-YmJP2L3WlvO0-4&quot; value=&quot;抽象構文木&amp;lt;div&amp;gt;(abstract syntax tree; AST)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#a20025;strokeColor=#6F0000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=10;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;220&quot; y=&quot;175.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;dCD0Xy3-YmJP2L3WlvO0-5&quot; value=&quot;マクロ&amp;lt;div&amp;gt;(macro)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#a20025;strokeColor=#6F0000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;280&quot; y=&quot;100&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;dCD0Xy3-YmJP2L3WlvO0-6&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#6F0000;html=1;fillColor=#a20025;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;dCD0Xy3-YmJP2L3WlvO0-1&quot; target=&quot;dCD0Xy3-YmJP2L3WlvO0-2&quot;&gt;&#10; &lt;mxGeometry x=&quot;31&quot; y=&quot;106.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-1489&quot; y=&quot;118.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-1389&quot; y=&quot;18.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;dCD0Xy3-YmJP2L3WlvO0-7&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#6F0000;html=1;fillColor=#a20025;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;dCD0Xy3-YmJP2L3WlvO0-1&quot; target=&quot;dCD0Xy3-YmJP2L3WlvO0-3&quot;&gt;&#10; &lt;mxGeometry x=&quot;31&quot; y=&quot;106.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-1489&quot; y=&quot;118.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-1389&quot; y=&quot;18.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;dCD0Xy3-YmJP2L3WlvO0-8&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#6F0000;html=1;exitX=0.627;exitY=0.022;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#a20025;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;dCD0Xy3-YmJP2L3WlvO0-1&quot; target=&quot;dCD0Xy3-YmJP2L3WlvO0-4&quot;&gt;&#10; &lt;mxGeometry x=&quot;31&quot; y=&quot;106.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;342.6638188278903&quot; y=&quot;209.5995728241835&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-1228&quot; y=&quot;-91.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;dCD0Xy3-YmJP2L3WlvO0-9&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#6F0000;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#a20025;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;dCD0Xy3-YmJP2L3WlvO0-17&quot; target=&quot;dCD0Xy3-YmJP2L3WlvO0-5&quot;&gt;&#10; &lt;mxGeometry x=&quot;31&quot; y=&quot;106.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;231&quot; y=&quot;92&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-1228&quot; y=&quot;-91.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;dCD0Xy3-YmJP2L3WlvO0-10&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.75;exitY=0;entryX=0.75;entryY=0;startArrow=none;startFill=0;endArrow=block;endFill=1;jettySize=auto;orthogonalLoop=1;strokeColor=#6F0000;strokeWidth=6;fontSize=20;fontColor=#2F5B7C;fillColor=#a20025;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;dCD0Xy3-YmJP2L3WlvO0-4&quot; target=&quot;dCD0Xy3-YmJP2L3WlvO0-4&quot;&gt;&#10; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;dCD0Xy3-YmJP2L3WlvO0-11&quot; value=&quot;メタプログラミング&amp;lt;div&amp;gt;(metaprogramming)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#a20025;strokeColor=#6F0000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;361&quot; y=&quot;250.25&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;dCD0Xy3-YmJP2L3WlvO0-12&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#6F0000;html=1;exitX=0.961;exitY=0.26;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#a20025;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;dCD0Xy3-YmJP2L3WlvO0-1&quot; target=&quot;dCD0Xy3-YmJP2L3WlvO0-11&quot;&gt;&#10; &lt;mxGeometry x=&quot;31&quot; y=&quot;106.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;383.2800000000002&quot; y=&quot;161.13999999999987&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;341&quot; y=&quot;254.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;dCD0Xy3-YmJP2L3WlvO0-13&quot; value=&quot;パーサーコンビネーター&amp;lt;div&amp;gt;(parser combinator)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#a20025;strokeColor=#6F0000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=10;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;20&quot; y=&quot;140&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;dCD0Xy3-YmJP2L3WlvO0-15&quot; value=&quot;構文解析&amp;lt;div&amp;gt;(parse)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#a20025;strokeColor=#6F0000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;50&quot; y=&quot;222&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;dCD0Xy3-YmJP2L3WlvO0-16&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#6F0000;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.044;entryY=0.296;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#a20025;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;dCD0Xy3-YmJP2L3WlvO0-15&quot; target=&quot;dCD0Xy3-YmJP2L3WlvO0-1&quot;&gt;&#10; &lt;mxGeometry x=&quot;31&quot; y=&quot;106.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;390&quot; y=&quot;387&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;190&quot; y=&quot;262&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;dCD0Xy3-YmJP2L3WlvO0-17&quot; value=&quot;同図像性&amp;lt;div&amp;gt;(homoiconicity)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#a20025;strokeColor=#6F0000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;310&quot; y=&quot;20&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;dCD0Xy3-YmJP2L3WlvO0-18&quot; value=&quot;超循環評価器&amp;lt;div&amp;gt;(meta-circular evaluator)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#a20025;strokeColor=#6F0000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;fontSize=10;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;220&quot; y=&quot;492&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;dCD0Xy3-YmJP2L3WlvO0-19&quot; value=&quot;セルフホスティング&amp;lt;div&amp;gt;(self-hosting)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;fillColor=#a20025;strokeColor=#6F0000;strokeWidth=3;shadow=0;html=1;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;243.5&quot; y=&quot;558.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;dCD0Xy3-YmJP2L3WlvO0-20&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#6F0000;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fillColor=#a20025;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;dCD0Xy3-YmJP2L3WlvO0-13&quot; target=&quot;dCD0Xy3-YmJP2L3WlvO0-15&quot;&gt;&#10; &lt;mxGeometry x=&quot;31&quot; y=&quot;106.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-80&quot; y=&quot;467.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;-20&quot; y=&quot;370.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;dCD0Xy3-YmJP2L3WlvO0-21&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#6F0000;html=1;exitX=0.611;exitY=0.03;exitDx=0;exitDy=0;entryX=0.421;entryY=0.941;entryDx=0;entryDy=0;entryPerimeter=0;exitPerimeter=0;fillColor=#a20025;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;dCD0Xy3-YmJP2L3WlvO0-18&quot; target=&quot;dCD0Xy3-YmJP2L3WlvO0-2&quot;&gt;&#10; &lt;mxGeometry x=&quot;31&quot; y=&quot;106.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;344&quot; y=&quot;532&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;330&quot; y=&quot;479&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;dCD0Xy3-YmJP2L3WlvO0-22&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#6F0000;html=1;exitX=0.373;exitY=0.03;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitPerimeter=0;fillColor=#a20025;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;dCD0Xy3-YmJP2L3WlvO0-18&quot; target=&quot;dCD0Xy3-YmJP2L3WlvO0-3&quot;&gt;&#10; &lt;mxGeometry x=&quot;31&quot; y=&quot;106.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;354&quot; y=&quot;542&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;340&quot; y=&quot;489&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;dCD0Xy3-YmJP2L3WlvO0-23&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#6F0000;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fillColor=#a20025;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;dCD0Xy3-YmJP2L3WlvO0-18&quot; target=&quot;dCD0Xy3-YmJP2L3WlvO0-19&quot;&gt;&#10; &lt;mxGeometry x=&quot;31&quot; y=&quot;106.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;303&quot; y=&quot;503&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;351&quot; y=&quot;441&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;dCD0Xy3-YmJP2L3WlvO0-24&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#6F0000;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;fillColor=#a20025;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;dCD0Xy3-YmJP2L3WlvO0-4&quot; target=&quot;dCD0Xy3-YmJP2L3WlvO0-5&quot;&gt;&#10; &lt;mxGeometry x=&quot;31&quot; y=&quot;106.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;255&quot; y=&quot;72&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;238&quot; y=&quot;122&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;dCD0Xy3-YmJP2L3WlvO0-25&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;strokeColor=#6F0000;html=1;entryX=0.75;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fillColor=#a20025;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;dCD0Xy3-YmJP2L3WlvO0-11&quot; target=&quot;dCD0Xy3-YmJP2L3WlvO0-5&quot;&gt;&#10; &lt;mxGeometry x=&quot;31&quot; y=&quot;106.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;421&quot; y=&quot;234.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;301&quot; y=&quot;152&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;/root&gt;&#10; &lt;/mxGraphModel&gt;&#10; &lt;/diagram&gt;&#10; &lt;diagram id=&quot;RfA5Uhbc7hwvF2-GivRF&quot; name=&quot;patterns&quot;&gt;&#10; &lt;mxGraphModel dx=&quot;2037&quot; dy=&quot;1143&quot; grid=&quot;1&quot; gridSize=&quot;10&quot; guides=&quot;1&quot; tooltips=&quot;1&quot; connect=&quot;1&quot; arrows=&quot;1&quot; fold=&quot;1&quot; page=&quot;1&quot; pageScale=&quot;1&quot; pageWidth=&quot;827&quot; pageHeight=&quot;1169&quot; math=&quot;0&quot; shadow=&quot;0&quot;&gt;&#10; &lt;root&gt;&#10; &lt;mxCell id=&quot;0&quot; /&gt;&#10; &lt;mxCell id=&quot;1&quot; parent=&quot;0&quot; /&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-1&quot; value=&quot;パターン&amp;lt;div&amp;gt;(patterns)&amp;lt;/div&amp;gt;&quot; style=&quot;ellipse;whiteSpace=wrap;html=1;shadow=0;fontFamily=Helvetica;fontSize=20;align=center;strokeWidth=3;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;681&quot; y=&quot;398.5&quot; width=&quot;120&quot; height=&quot;120&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-6&quot; value=&quot;再帰&amp;lt;div&amp;gt;(recursion)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;621&quot; y=&quot;198.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-7&quot; value=&quot;遅延評価&amp;lt;div&amp;gt;(lazy evaluation)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;491&quot; y=&quot;218.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-8&quot; value=&quot;メモ化&amp;lt;div&amp;gt;(memoization)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;346&quot; y=&quot;238.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-9&quot; value=&quot;並行プログラミング&amp;lt;div&amp;gt;(concurrent programming)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fontSize=10;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;479.5&quot; y=&quot;398.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-10&quot; value=&quot;アクターモデル&amp;lt;div&amp;gt;(actor model)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;320&quot; y=&quot;305&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-11&quot; value=&quot;STM&amp;lt;div&amp;gt;(software transactional&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp;memory)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fontSize=10;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;359.5&quot; y=&quot;488.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-12&quot; value=&quot;CSP&amp;lt;div&amp;gt;(communicating sequential&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;span style=&amp;quot;background-color: transparent; color: light-dark(rgb(255, 255, 255), rgb(18, 18, 18));&amp;quot;&amp;gt;&amp;amp;nbsp;processes)&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fontSize=8;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;282&quot; y=&quot;390&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-13&quot; value=&quot;継続&amp;lt;div&amp;gt;(continuation)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;748.5&quot; y=&quot;145&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-14&quot; value=&quot;高階関数&amp;lt;div&amp;gt;(higher-order function)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fontSize=10;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;150&quot; y=&quot;675&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-15&quot; value=&quot;関数合成&amp;lt;div&amp;gt;(function composition)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;346&quot; y=&quot;685&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-16&quot; value=&quot;カリー化&amp;lt;div&amp;gt;(currying)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;628.5&quot; y=&quot;738.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-17&quot; value=&quot;部分適用&amp;lt;div&amp;gt;(partial application)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;499.5&quot; y=&quot;675&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-18&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0.875;exitY=0.988;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-39&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-17&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;490&quot; y=&quot;648.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;109.5&quot; y=&quot;-703.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-19&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-38&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-6&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;490&quot; y=&quot;272&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;118.5&quot; y=&quot;-736.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-20&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-37&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-7&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;370&quot; y=&quot;242&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;118.5&quot; y=&quot;-736.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-21&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0;exitY=0;exitDx=0;exitDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-37&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-8&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;494&quot; y=&quot;272&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;292.5&quot; y=&quot;-716.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-22&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-1&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-9&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;292.5&quot; y=&quot;-590&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;392.5&quot; y=&quot;-690&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-23&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0;exitY=0;exitDx=0;exitDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-9&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-10&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;292.5&quot; y=&quot;-590&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;392.5&quot; y=&quot;-690&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-24&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-9&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-11&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;292.5&quot; y=&quot;-590&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;392.5&quot; y=&quot;-690&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-25&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-9&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-12&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;292.5&quot; y=&quot;-590&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;400&quot; y=&quot;518.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-26&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0.75;exitY=0;exitDx=0;exitDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-38&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-13&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;560&quot; y=&quot;292&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;118.5&quot; y=&quot;-736.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-27&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0;exitY=1;exitDx=0;exitDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-39&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-14&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;340&quot; y=&quot;658.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;109.5&quot; y=&quot;-703.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-28&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0.401;exitY=1.013;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-39&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-15&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;9.5&quot; y=&quot;-603.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;109.5&quot; y=&quot;-703.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-29&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-17&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-16&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;9.5&quot; y=&quot;-603.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;109.5&quot; y=&quot;-703.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-37&quot; value=&quot;評価&amp;lt;div&amp;gt;(evaluation)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;508.5&quot; y=&quot;310&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-38&quot; value=&quot;制御&amp;lt;div&amp;gt;(control)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;671&quot; y=&quot;278.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-39&quot; value=&quot;関数&amp;lt;div&amp;gt;(function)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;371&quot; y=&quot;585&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-40&quot; value=&quot;パイプ演算子&amp;lt;div&amp;gt;(pipe operator)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;331&quot; y=&quot;755&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-41&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-15&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-40&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;464.5&quot; y=&quot;716.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;381&quot; y=&quot;725&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-42&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.029;exitY=0.677;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-1&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-39&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;550&quot; y=&quot;488.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;924&quot; y=&quot;661&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-43&quot; value=&quot;メソッドチェーン&amp;lt;div&amp;gt;(method chaining)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;opacity=50;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;509.5&quot; y=&quot;795&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-44&quot; value=&quot;&amp;lt;div&amp;gt;代数的データ型&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;(algebraic data type; ADT)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fontSize=10;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1011&quot; y=&quot;593.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-45&quot; value=&quot;&amp;lt;div&amp;gt;パターンマッチ&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;(pattern matching)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1159&quot; y=&quot;538.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-46&quot; value=&quot;クロージャー/関数閉包&amp;lt;div&amp;gt;(closure)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fontSize=10;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;561&quot; y=&quot;605&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-47&quot; value=&quot;オブジェクト&amp;lt;div&amp;gt;(object)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;opacity=50;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;790&quot; y=&quot;765&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-48&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-39&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-46&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;491&quot; y=&quot;535.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;601&quot; y=&quot;531.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-49&quot; value=&quot;&amp;lt;div&amp;gt;抽象データ型&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;(abstract data type)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;960&quot; y=&quot;658.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-50&quot; value=&quot;&amp;lt;div&amp;gt;データ&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;(data)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;790&quot; y=&quot;600&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-51&quot; value=&quot;直和型&amp;lt;div&amp;gt;(sum type)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1115&quot; y=&quot;668.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-52&quot; value=&quot;直積型&amp;lt;br&amp;gt;&amp;lt;div&amp;gt;(product type)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1270&quot; y=&quot;648.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-53&quot; value=&quot;&amp;lt;div&amp;gt;カプセル化&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;(encapsulation)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;opacity=50;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1110&quot; y=&quot;725&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-54&quot; value=&quot;ポリモーフィズム/多相&amp;lt;div&amp;gt;(polymorphism)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fontSize=10;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;930&quot; y=&quot;248.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-55&quot; value=&quot;サブタイプ多相&amp;lt;div&amp;gt;(subtype polymorphism)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fontSize=10;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1250&quot; y=&quot;345&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-56&quot; value=&quot;パラメータ多相&amp;lt;div&amp;gt;(parametric polymorphism)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fontSize=10;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1159&quot; y=&quot;248.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-57&quot; value=&quot;アドホック多相&amp;lt;div&amp;gt;(ad hoc polymorphism)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fontSize=10;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1200&quot; y=&quot;158.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-58&quot; value=&quot;型クラス&amp;lt;div&amp;gt;(type class)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1180&quot; y=&quot;25.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-59&quot; value=&quot;マルチメソッド&amp;lt;div&amp;gt;(multimethod)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1400&quot; y=&quot;88.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-60&quot; value=&quot;プロトコル&amp;lt;div&amp;gt;(protocol)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1444&quot; y=&quot;158.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-61&quot; value=&quot;変性&amp;lt;div&amp;gt;(variance)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1420&quot; y=&quot;310&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-62&quot; value=&quot;継承&amp;lt;div&amp;gt;(inheritance)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;opacity=50;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1430&quot; y=&quot;408.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-64&quot; value=&quot;&amp;lt;div&amp;gt;分配束縛&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;(destructuring)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1300&quot; y=&quot;518.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-65&quot; value=&quot;&amp;lt;div&amp;gt;純粋関数型データ構造&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;(purely functional&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp;data structure)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fontSize=10;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;910&quot; y=&quot;328.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-66&quot; value=&quot;&amp;lt;div&amp;gt;永続データ構造&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;(persistent data structure)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fontSize=10;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;820&quot; y=&quot;467&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-67&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0;exitY=0;exitDx=0;exitDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-1&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-37&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;680&quot; y=&quot;368.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;587&quot; y=&quot;435.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-68&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-1&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-38&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;688&quot; y=&quot;485.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;597&quot; y=&quot;445.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-69&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0;exitY=0;exitDx=0;exitDy=0;entryX=0.648;entryY=0.975;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-50&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;698&quot; y=&quot;495.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;607&quot; y=&quot;455.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-70&quot; value=&quot;オーバーロード/多重定義&amp;lt;div&amp;gt;(overloading)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fontSize=10;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1350&quot; y=&quot;20&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-71&quot; value=&quot;pipes &amp;amp;amp; filters&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;309.5&quot; y=&quot;825&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-72&quot; value=&quot;goroutines &amp;amp;amp; channels&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;opacity=50;fontSize=10;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;100&quot; y=&quot;368.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-73&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;entryX=0.972;entryY=0.373;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0;exitY=1;exitDx=0;exitDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-54&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-1&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;844&quot; y=&quot;458.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;782&quot; y=&quot;530.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-74&quot; value=&quot;&amp;lt;div&amp;gt;データ指向プログラミング&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;(data-oriented programming)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fontSize=8;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;820&quot; y=&quot;698.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-75&quot; value=&quot;ファンクター&amp;lt;div&amp;gt;(functor)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;930&quot; y=&quot;528.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-76&quot; value=&quot;モナド&amp;lt;div&amp;gt;(monad)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1240&quot; y=&quot;448.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-77&quot; value=&quot;リスト&amp;lt;div&amp;gt;(list)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;940&quot; y=&quot;398.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-78&quot; value=&quot;遅延リスト/ストリーム&amp;lt;div&amp;gt;(lazy list/stream)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fontSize=10;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1080&quot; y=&quot;358.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-81&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0;entryDx=0;entryDy=0;opacity=50;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-46&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-47&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;783&quot; y=&quot;590.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1038&quot; y=&quot;580.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-82&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;opacity=50;entryX=0;entryY=0;entryDx=0;entryDy=0;exitX=1;exitY=1;exitDx=0;exitDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-49&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-53&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1070&quot; y=&quot;738.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1110&quot; y=&quot;738.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-83&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;entryX=0.25;entryY=0;entryDx=0;entryDy=0;opacity=50;exitX=1;exitY=0.75;exitDx=0;exitDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-55&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-62&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1310&quot; y=&quot;388.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1479&quot; y=&quot;585&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-84&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0.371;exitY=0.989;exitDx=0;exitDy=0;opacity=50;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-12&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-72&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1164&quot; y=&quot;530.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;260&quot; y=&quot;368.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-85&quot; value=&quot;ベクター&amp;lt;div&amp;gt;(vector)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1089&quot; y=&quot;418.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-86&quot; value=&quot;全域関数&amp;lt;div&amp;gt;(total function)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;206&quot; y=&quot;578.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-87&quot; value=&quot;部分関数&amp;lt;div&amp;gt;(partial function)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;20&quot; y=&quot;568.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-88&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=classic;strokeWidth=3;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;endFill=1;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-86&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-87&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;260&quot; y=&quot;422&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;255&quot; y=&quot;502&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-89&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-39&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-86&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;440&quot; y=&quot;617&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;319&quot; y=&quot;715&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-90&quot; value=&quot;&amp;lt;div&amp;gt;オブジェクト指向プログラミング&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;(object-oriented&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp;programming)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fontSize=8;opacity=50;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1240&quot; y=&quot;825&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-91&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;opacity=50;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-47&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-90&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1083&quot; y=&quot;705.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1080&quot; y=&quot;828.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-92&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=classic;strokeWidth=3;html=1;opacity=50;startArrow=classic;startFill=1;endFill=1;entryX=0;entryY=0;entryDx=0;entryDy=0;exitX=1;exitY=1;exitDx=0;exitDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-74&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-90&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;960&quot; y=&quot;758.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1130&quot; y=&quot;798.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-93&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0;exitY=0.25;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-61&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-56&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1400&quot; y=&quot;278.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1300&quot; y=&quot;308.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-94&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-61&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-55&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1500&quot; y=&quot;545&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1404&quot; y=&quot;540&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-95&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;opacity=50;exitX=1;exitY=1;exitDx=0;exitDy=0;entryX=0.333;entryY=-0.012;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-53&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-90&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1260&quot; y=&quot;758.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1300&quot; y=&quot;778.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-96&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;entryX=0.93;entryY=-0.004;entryDx=0;entryDy=0;opacity=50;entryPerimeter=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-62&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-90&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1470&quot; y=&quot;508.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1560&quot; y=&quot;743.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-97&quot; value=&quot;アプリカティブ&amp;lt;br&amp;gt;&amp;lt;div&amp;gt;(applicative)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1064&quot; y=&quot;479.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-98&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0.924;exitY=1.032;exitDx=0;exitDy=0;entryX=0;entryY=0;entryDx=0;entryDy=0;opacity=50;exitPerimeter=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-15&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-43&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;561&quot; y=&quot;765&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;652&quot; y=&quot;785&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-99&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;opacity=50;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-43&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-90&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1070&quot; y=&quot;818.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1161&quot; y=&quot;838.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-100&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-40&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-71&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;555&quot; y=&quot;785&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;591&quot; y=&quot;815&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-101&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=1;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-49&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-50&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1078.5&quot; y=&quot;630.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;982.5&quot; y=&quot;625.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-102&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-55&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-54&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1173&quot; y=&quot;550&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1164&quot; y=&quot;328.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-103&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-56&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-54&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;898&quot; y=&quot;555.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;802&quot; y=&quot;550.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-104&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-57&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-54&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;734&quot; y=&quot;545.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;638&quot; y=&quot;540.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-105&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.674;entryY=0.12;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-44&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-50&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;982.5&quot; y=&quot;577&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;886.5&quot; y=&quot;572&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-106&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.95;entryY=0.925;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-52&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-44&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;893&quot; y=&quot;680.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1140&quot; y=&quot;638.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-107&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.65;entryY=0.925;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-51&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-44&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1039&quot; y=&quot;383.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1009&quot; y=&quot;450.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-108&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-74&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-50&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1009&quot; y=&quot;663.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;920&quot; y=&quot;650.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-109&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.889;entryY=0.043;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-45&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-44&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1198&quot; y=&quot;590.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1113&quot; y=&quot;604.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-110&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-64&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-45&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1270&quot; y=&quot;488.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1099&quot; y=&quot;586.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-111&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0.421;exitY=0.911;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.358;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-58&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-57&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1280&quot; y=&quot;175.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1200&quot; y=&quot;138.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-112&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-59&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-57&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1279&quot; y=&quot;185&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1340&quot; y=&quot;108.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-113&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-60&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-57&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1393&quot; y=&quot;185.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1370&quot; y=&quot;188.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-114&quot; value=&quot;トレイト&amp;lt;div&amp;gt;(trait)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1600&quot; y=&quot;248.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-115&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-114&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-57&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1270&quot; y=&quot;298.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1370&quot; y=&quot;218.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-116&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-70&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-57&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1370&quot; y=&quot;188.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1220&quot; y=&quot;215.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-117&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-66&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-50&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;800&quot; y=&quot;630.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;747&quot; y=&quot;625.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-118&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0.183;exitY=0.959;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitPerimeter=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-65&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-66&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;954&quot; y=&quot;458.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1024&quot; y=&quot;378.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-119&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-75&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;874&quot; y=&quot;517.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;870&quot; y=&quot;598.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-120&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-97&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-75&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;954&quot; y=&quot;547.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1000&quot; y=&quot;488.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-121&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-76&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-97&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;964&quot; y=&quot;557.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;890&quot; y=&quot;618.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-125&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;entryX=0.846;entryY=-0.002;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0;exitY=0.75;exitDx=0;exitDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-77&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-66&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;930&quot; y=&quot;418.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;890&quot; y=&quot;477.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-126&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;entryX=0.75;entryY=0;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-78&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-77&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1060&quot; y=&quot;338.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;900&quot; y=&quot;487.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-127&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-85&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-66&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;943&quot; y=&quot;418.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;970&quot; y=&quot;468.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-132&quot; value=&quot;必要呼び&amp;lt;div&amp;gt;(call by need)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;379.5&quot; y=&quot;158.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-133&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0.427;exitY=-0.039;exitDx=0;exitDy=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;exitPerimeter=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-8&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-132&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;519&quot; y=&quot;320.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;456&quot; y=&quot;288.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-134&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-7&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-132&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;529&quot; y=&quot;330.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;466&quot; y=&quot;298.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-135&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;opacity=50;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-114&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-90&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1514&quot; y=&quot;508.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1410&quot; y=&quot;818.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-136&quot; value=&quot;ジェネリクス&amp;lt;div&amp;gt;(generics)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fontSize=10;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1310&quot; y=&quot;238.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-137&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-136&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-56&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1430&quot; y=&quot;330.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1289&quot; y=&quot;288.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-138&quot; value=&quot;末尾再帰&amp;lt;div&amp;gt;(tail recursion)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;598.5&quot; y=&quot;105&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-139&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-6&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-138&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;700&quot; y=&quot;288.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;659&quot; y=&quot;198.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-144&quot; value=&quot;再帰型&amp;lt;br&amp;gt;&amp;lt;div&amp;gt;(recursive type)&amp;lt;/div&amp;gt;&quot; style=&quot;rounded=1;strokeWidth=3;shadow=0;html=1;fillColor=#e51400;strokeColor=#B20000;fontColor=#ffffff;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;1230&quot; y=&quot;593.5&quot; width=&quot;120&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;cHZ2Tr7q2S13HvNRDCVo-145&quot; value=&quot;&quot; style=&quot;edgeStyle=none;endArrow=none;strokeWidth=3;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#B20000;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;cHZ2Tr7q2S13HvNRDCVo-144&quot; target=&quot;cHZ2Tr7q2S13HvNRDCVo-44&quot;&gt;&#10; &lt;mxGeometry x=&quot;188.5&quot; y=&quot;51.5&quot; width=&quot;100&quot; height=&quot;100&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;1289&quot; y=&quot;673.5&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;1150&quot; y=&quot;628.5&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;/root&gt;&#10; &lt;/mxGraphModel&gt;&#10; &lt;/diagram&gt;&#10;&lt;/mxfile&gt;&#10;"><defs/><g><g data-cell-id="0"><g data-cell-id="1"><g data-cell-id="epnklWbwfDs_07GPxRn5-1"><g><ellipse cx="309.5" cy="250" rx="60" ry="60" fill="#008a00" stroke="#005700" stroke-width="3" pointer-events="all" style="fill: light-dark(rgb(0, 138, 0), rgb(67, 186, 67)); stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 250px; margin-left: 251px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 20px; font-family: &quot;Helvetica&quot;; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">言語<div>(languages)</div></div></div></div></foreignObject><text x="310" y="256" fill="#ffffff" font-family="&quot;Helvetica&quot;" font-size="20px" text-anchor="middle">言語&#xa;(languages)</text></switch></g></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-2"><g><rect x="98" y="322.5" width="120" height="40" rx="6" ry="6" fill="#008a00" stroke="#005700" stroke-width="3" pointer-events="all" style="fill: light-dark(rgb(0, 138, 0), rgb(67, 186, 67)); stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 343px; margin-left: 158px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; white-space: nowrap; ">Lisp</div></div></div></foreignObject><text x="158" y="346" fill="#ffffff" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Lisp</text></switch></g></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-3"><g><rect x="20.5" y="208.5" width="120" height="40" rx="6" ry="6" fill="#008a00" stroke="#005700" stroke-width="3" pointer-events="all" style="fill: light-dark(rgb(0, 138, 0), rgb(67, 186, 67)); stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 229px; margin-left: 81px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; white-space: nowrap; ">Clojure</div></div></div></foreignObject><text x="81" y="232" fill="#ffffff" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Clojure</text></switch></g></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-4"><g><rect x="146" y="138.5" width="120" height="40" rx="6" ry="6" fill="#008a00" stroke="#005700" stroke-width="3" pointer-events="all" style="fill: light-dark(rgb(0, 138, 0), rgb(67, 186, 67)); stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 159px; margin-left: 206px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; white-space: nowrap; ">Erlang</div></div></div></foreignObject><text x="206" y="162" fill="#ffffff" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Erlang</text></switch></g></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-5"><g><rect x="1" y="88.5" width="120" height="40" rx="6" ry="6" fill="#008a00" stroke="#005700" stroke-width="3" pointer-events="all" style="fill: light-dark(rgb(0, 138, 0), rgb(67, 186, 67)); stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 109px; margin-left: 61px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; white-space: nowrap; ">Elixir</div></div></div></foreignObject><text x="61" y="112" fill="#ffffff" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Elixir</text></switch></g></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-6"><g><rect x="393.5" y="150" width="120" height="40" rx="6" ry="6" fill="#008a00" stroke="#005700" stroke-width="3" pointer-events="all" style="fill: light-dark(rgb(0, 138, 0), rgb(67, 186, 67)); stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 170px; margin-left: 454px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; white-space: nowrap; ">Haskell</div></div></div></foreignObject><text x="454" y="174" fill="#ffffff" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Haskell</text></switch></g></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-7"><g><rect x="576" y="251.5" width="120" height="40" rx="6" ry="6" fill="#008a00" stroke="#005700" stroke-width="3" pointer-events="all" style="fill: light-dark(rgb(0, 138, 0), rgb(67, 186, 67)); stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 272px; margin-left: 636px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; white-space: nowrap; ">OCaml</div></div></div></foreignObject><text x="636" y="275" fill="#ffffff" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">OCaml</text></switch></g></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-8"><g><rect x="466" y="438.5" width="120" height="40" rx="6" ry="6" fill="#008a00" stroke="#005700" stroke-width="3" pointer-events="all" style="fill: light-dark(rgb(0, 138, 0), rgb(67, 186, 67)); stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 459px; margin-left: 526px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; white-space: nowrap; ">Standard ML</div></div></div></foreignObject><text x="526" y="462" fill="#ffffff" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Standard ML</text></switch></g></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-9"><g><rect x="406" y="303.5" width="120" height="40" rx="6" ry="6" fill="#008a00" stroke="#005700" stroke-width="3" pointer-events="all" style="fill: light-dark(rgb(0, 138, 0), rgb(67, 186, 67)); stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 324px; margin-left: 466px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; white-space: nowrap; ">ML</div></div></div></foreignObject><text x="466" y="327" fill="#ffffff" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">ML</text></switch></g></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-10"><g><path d="M 259.46 283.36 L 192.31 322.5" fill="none" stroke="#005700" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-11"><g><path d="M 128 322.5 L 90.61 248.5" fill="none" stroke="#005700" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-12"><g><path d="M 158 322.5 L 200.15 178.5" fill="none" stroke="#005700" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-13"><g><path d="M 146 158.5 L 95 128.5" fill="none" stroke="#005700" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-14"><g><path d="M 464.37 303.5 L 455.13 190" fill="none" stroke="#005700" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-15"><g><path d="M 526 303.5 L 576 288.95" fill="none" stroke="#005700" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-16"><g><path d="M 507.64 343.3 L 522.81 438.5" fill="none" stroke="#005700" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-17"><g><path d="M 362.03 279 L 406 303.5" fill="none" stroke="#005700" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-18"><g><rect x="481" y="1" width="120" height="40" rx="6" ry="6" fill="#008a00" stroke="#005700" stroke-width="3" pointer-events="all" style="fill: light-dark(rgb(0, 138, 0), rgb(67, 186, 67)); stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 21px; margin-left: 541px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; white-space: nowrap; ">Idris</div></div></div></foreignObject><text x="541" y="25" fill="#ffffff" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Idris</text></switch></g></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-19"><g><rect x="331" y="21" width="120" height="40" rx="6" ry="6" fill="#008a00" stroke="#005700" stroke-width="3" pointer-events="all" style="fill: light-dark(rgb(0, 138, 0), rgb(67, 186, 67)); stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 41px; margin-left: 391px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; white-space: nowrap; ">Elm</div></div></div></foreignObject><text x="391" y="45" fill="#ffffff" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Elm</text></switch></g></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-21"><g><path d="M 80.5 208.5 L 64.9 128.5" fill="none" stroke="#005700" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-22"><g><path d="M 423.5 150 L 391 61" fill="none" stroke="#005700" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-23"><g><path d="M 521.02 71 L 541 41" fill="none" stroke="#005700" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-24"><g><rect x="617" y="173" width="120" height="40" rx="6" ry="6" fill="#008a00" stroke="#005700" stroke-width="3" pointer-events="all" style="fill: light-dark(rgb(0, 138, 0), rgb(67, 186, 67)); stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 193px; margin-left: 677px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; white-space: nowrap; ">Coq (Rocq)</div></div></div></foreignObject><text x="677" y="197" fill="#ffffff" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Coq (Rocq)</text></switch></g></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-25"><g><path d="M 636 251.5 L 677 213" fill="none" stroke="#005700" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-26"><g><rect x="305" y="455" width="120" height="40" rx="6" ry="6" fill="#008a00" stroke="#005700" stroke-width="3" pointer-events="all" style="fill: light-dark(rgb(0, 138, 0), rgb(67, 186, 67)); stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 475px; margin-left: 365px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; white-space: nowrap; ">Scala</div></div></div></foreignObject><text x="365" y="479" fill="#ffffff" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Scala</text></switch></g></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-27"><g><path d="M 365 455 L 436 343.5" fill="none" stroke="#005700" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-28"><g><rect x="473.5" y="71" width="120" height="40" rx="6" ry="6" fill="#008a00" stroke="#005700" stroke-width="3" pointer-events="all" style="fill: light-dark(rgb(0, 138, 0), rgb(67, 186, 67)); stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 91px; margin-left: 534px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; white-space: nowrap; ">Agda</div></div></div></foreignObject><text x="534" y="95" fill="#ffffff" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Agda</text></switch></g></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-29"><g><path d="M 472.58 150.16 L 514.06 110.52" fill="none" stroke="#005700" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-30"><g><rect x="626" y="335.5" width="120" height="40" rx="6" ry="6" fill="#008a00" stroke="#005700" stroke-width="3" pointer-events="all" style="fill: light-dark(rgb(0, 138, 0), rgb(67, 186, 67)); stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 356px; margin-left: 686px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; white-space: nowrap; ">F#</div></div></div></foreignObject><text x="686" y="359" fill="#ffffff" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">F#</text></switch></g></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-31"><g><path d="M 636 291.5 L 668.6 337.78" fill="none" stroke="#005700" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-32"><g><rect x="639.5" y="91.5" width="120" height="40" rx="6" ry="6" fill="#008a00" stroke="#005700" stroke-width="3" pointer-events="all" style="fill: light-dark(rgb(0, 138, 0), rgb(67, 186, 67)); stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 112px; margin-left: 700px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; white-space: nowrap; ">Lean</div></div></div></foreignObject><text x="700" y="115" fill="#ffffff" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Lean</text></switch></g></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-33"><g><path d="M 677 173 L 699.5 131.5" fill="none" stroke="#005700" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-34"><g><rect x="107" y="28.5" width="120" height="40" rx="6" ry="6" fill="#008a00" stroke="#005700" stroke-width="3" pointer-events="all" style="fill: light-dark(rgb(0, 138, 0), rgb(67, 186, 67)); stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 49px; margin-left: 167px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; white-space: nowrap; ">Gleam</div></div></div></foreignObject><text x="167" y="52" fill="#ffffff" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Gleam</text></switch></g></g></g><g data-cell-id="epnklWbwfDs_07GPxRn5-35"><g><path d="M 206 138.5 L 167 68.5" fill="none" stroke="#005700" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 87, 0), rgb(130, 205, 130));"/></g></g></g></g></g></svg>
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View raw

(Sorry about that, but we can’t show files that are this big right now.)

Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View raw

(Sorry about that, but we can’t show files that are this big right now.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment