<commit_before><!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=1024" />
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <title>Type-Level Programming | The Sub-space of Scala | by <NAME> @joescii</title>
    
    <meta name="description" content="." />
    <meta name="author" content="<NAME>" />

    <link href="http://fonts.googleapis.com/css?family=Open+Sans:regular,semibold,italic,italicsemibold|PT+Sans:400,700,400italic,700italic|PT+Serif:400,700,400italic,700italic" rel="stylesheet" />

    <link href="css/type-prog.css" rel="stylesheet" />

    <link rel="shortcut icon" href="favicon.png" />
    <link rel="apple-touch-icon" href="apple-touch-icon.png" />
</head>

<body class="impress-not-supported">

<div class="fallback-message">
    <p>Your browser <b>doesn't support the features required</b> by impress.js, so you are presented with a simplified version of this presentation.</p>
    <p>For the best experience please use the latest <b>Chrome</b>, <b>Safari</b> or <b>Firefox</b> browser.</p>
</div>

<div id="impress">

  <div id="title" class="step" data-x="-2000" data-bg="sc">
    <h1>Type-Level Programming</h1>
    <h2>The Sub-space of Scala</h2>
  </div>

  <div id="joe-barnes" class="step" data-x="-725" data-y="150" data-bg="sc">
    <div class="name">
      <h1><NAME></h1>
      <h2><i><a href="https://twitter.com/joescii">@joescii</a></i></h2>
      <h2><i><a href="http://proseand.co.nz">prose :: and :: conz</a> </i></h2>
    </div>
    <ul>
      <li>CS and Math degrees</li>
      <li>Programming Java since 2004</li>
      <li>Started Scala late 2012</li>
      <li>Writing Scala at Mentor Graphics</li>
    </ul>
  </div>

  <div id="subspace" class="step" data-x="-4000"  data-rotate="90" data-bg="sc">
    <p><i>Subspace?!?</i></p>
    <p><b>That sounds like math!</b></p>
  </div>

  <div id="mario2" class="step mario" data-x="700" data-bg="sc-none">
    <img src="imgs/Mario2.png">
    <span>Normal value programming</span>
  </div>

  <div id="potion" class="step mario" data-x="2200" data-bg="sc-none">
    <img src="imgs/Potion.png">
    <span>A flask of type programming!</span>
  </div>

  <div id="door" class="step mario" data-x="3700" data-bg="sc-none">
    <img src="imgs/Door.png">
    <span>Where does this go?</span>
  </div>

  <div id="in-subspace" class="step mario" data-x="3700" data-z="-200" data-rotate-y="180" data-bg="ss-none">
    <img src="imgs/Subcon.png">
    <span>SUBSPACE!</span>
  </div>

  <div id="val" class="step" data-x="2000"  data-y="-3000" data-bg="sc">
    <pre><code class="scala light"><div class="centered">
      val num = 1 + 2 + 3
    </div></code></pre>
  </div>

  <div id="lazy-val" class="step" data-x="2000" data-y="-2750" data-z="500" data-bg="sc">
    <pre><code class="scala light"><div class="centered">
      lazy val str = "a"+"b"+"c"
    </div></code></pre>
  </div>

  <div id="def" class="step" data-x="2000" data-y="-2500" data-z="1000" data-bg="sc">
    <pre><code class="scala light"><div class="centered">
      def time = new java.util.Date
    </div></code></pre>
  </div>

  <div id="type" class="step" data-x="2000" data-y="-2250" data-z="1500" data-bg="ss">
    <pre><code class="scala dark"><div class="centered">
      type MyMap = Map[Int, String]
    </div></code></pre>
  </div>

  <div id="boolval" class="step" data-x="1000" data-y="1000" data-bg="sc">
    <pre><code class="scala light"><div class="centered">
sealed trait BoolVal
case object TrueVal extends BoolVal
case object FalseVal extends BoolVal
    </div></code></pre>
  </div>

  <div id="boolval-or-not" class="step" data-x="1000" data-y="2000" data-z="500" data-rotate-y="45" data-bg="sc">
    <pre><code class="scala light"><div class="centered">
sealed trait BoolVal {
  def not:BoolVal
  def or(that:BoolVal):BoolVal
}
    </div></code></pre>
  </div>

  <div id="trueval-or-not" class="step" data-x="1000" data-y="3000" data-z="0" data-rotate-y="90" data-bg="sc">
    <pre><code class="scala light"><div class="centered">
case object TrueVal extends BoolVal {
  override val not = FalseVal
  override def or(that:BoolVal) =
    TrueVal
}
    </div></code></pre>
  </div>

  <div id="falseval-or-not" class="step" data-x="1000" data-y="4000" data-z="500" data-rotate-y="135" data-bg="sc">
    <pre><code class="scala light"><div class="centered">
case object FalseVal extends BoolVal {
  override val not = TrueVal
  override def or(that:BoolVal) = that
}
    </div></code> </pre>
  </div>

  <div id="booltype" class="step" data-x="2300" data-y="1000" data-bg="ss">
    <pre><code class="scala dark"><div class="centered">
sealed trait BoolType
sealed trait TrueType extends BoolType
sealed trait FalseType extends BoolType
    </div></code></pre>
  </div>

  <div id="bool-compare" class="step" data-x="1600" data-y="1000" data-scale="1.3" data-bg="sc">

  </div>

  <div id="booltype-or-not" class="step" data-x="1750" data-y="2000" data-z="-250" data-rotate-y="45" data-bg="ss">
    <pre><code class="scala dark"><div class="centered">
sealed trait BoolType {
  type Not &lt;: BoolType
  type Or[That &lt;: BoolType] &lt;: BoolType
}
    </div></code></pre>
  </div>

  <div id="or-not-compare" class="step" data-x="1500" data-y="2000" data-z="250" data-rotate-y="45" data-scale="1.3" data-bg="sc">

  </div>

  <div id="truetype-or-not" class="step" data-x="1000" data-y="3000" data-z="-1000" data-rotate-y="90" data-bg="ss">
    <pre><code class="scala dark"><div class="centered">
sealed trait TrueType extends BoolType {
  override type Not = FalseType
  override type Or[That &lt;: BoolType] =
    TrueType
}
    </div></code></pre>
  </div>

  <div id="true-compare" class="step" data-x="1000" data-y="3000" data-z="-500" data-rotate-y="90" data-scale="1.3" data-bg="sc">

  </div>

  <!--<div id="falseval-or-not" class="step" data-x="1000" data-y="4000" data-z="500" data-rotate-y="135" data-bg="sc">-->
  <div id="falsetype-or-not" class="step" data-x="150" data-y="4000" data-z="-500" data-rotate-y="135" data-bg="ss">
    <pre><code class="scala dark"><div class="centered">
sealed trait FalseType extends BoolType {
  override type Not = TrueType
  override type Or[That &lt;: BoolType] = That
}
    </div></code> </pre>
  </div>

  <div id="false-compare" class="step" data-x="1000" data-y="4000" data-z="-300" data-rotate-y="135" data-scale="1.3" data-bg="sc">

  </div><commit_msg>Fixed the compare false slide<commit_after><!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=1024" />
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <title>Type-Level Programming | The Sub-space of Scala | by <NAME> @joescii</title>
    
    <meta name="description" content="." />
    <meta name="author" content="<NAME>" />

    <link href="http://fonts.googleapis.com/css?family=Open+Sans:regular,semibold,italic,italicsemibold|PT+Sans:400,700,400italic,700italic|PT+Serif:400,700,400italic,700italic" rel="stylesheet" />

    <link href="css/type-prog.css" rel="stylesheet" />

    <link rel="shortcut icon" href="favicon.png" />
    <link rel="apple-touch-icon" href="apple-touch-icon.png" />
</head>

<body class="impress-not-supported">

<div class="fallback-message">
    <p>Your browser <b>doesn't support the features required</b> by impress.js, so you are presented with a simplified version of this presentation.</p>
    <p>For the best experience please use the latest <b>Chrome</b>, <b>Safari</b> or <b>Firefox</b> browser.</p>
</div>

<div id="impress">

  <div id="title" class="step" data-x="-2000" data-bg="sc">
    <h1>Type-Level Programming</h1>
    <h2>The Sub-space of Scala</h2>
  </div>

  <div id="joe-barnes" class="step" data-x="-725" data-y="150" data-bg="sc">
    <div class="name">
      <h1><NAME></h1>
      <h2><i><a href="https://twitter.com/joescii">@joescii</a></i></h2>
      <h2><i><a href="http://proseand.co.nz">prose :: and :: conz</a> </i></h2>
    </div>
    <ul>
      <li>CS and Math degrees</li>
      <li>Programming Java since 2004</li>
      <li>Started Scala late 2012</li>
      <li>Writing Scala at Mentor Graphics</li>
    </ul>
  </div>

  <div id="subspace" class="step" data-x="-4000"  data-rotate="90" data-bg="sc">
    <p><i>Subspace?!?</i></p>
    <p><b>That sounds like math!</b></p>
  </div>

  <div id="mario2" class="step mario" data-x="700" data-bg="sc-none">
    <img src="imgs/Mario2.png">
    <span>Normal value programming</span>
  </div>

  <div id="potion" class="step mario" data-x="2200" data-bg="sc-none">
    <img src="imgs/Potion.png">
    <span>A flask of type programming!</span>
  </div>

  <div id="door" class="step mario" data-x="3700" data-bg="sc-none">
    <img src="imgs/Door.png">
    <span>Where does this go?</span>
  </div>

  <div id="in-subspace" class="step mario" data-x="3700" data-z="-200" data-rotate-y="180" data-bg="ss-none">
    <img src="imgs/Subcon.png">
    <span>SUBSPACE!</span>
  </div>

  <div id="val" class="step" data-x="2000"  data-y="-3000" data-bg="sc">
    <pre><code class="scala light"><div class="centered">
      val num = 1 + 2 + 3
    </div></code></pre>
  </div>

  <div id="lazy-val" class="step" data-x="2000" data-y="-2750" data-z="500" data-bg="sc">
    <pre><code class="scala light"><div class="centered">
      lazy val str = "a"+"b"+"c"
    </div></code></pre>
  </div>

  <div id="def" class="step" data-x="2000" data-y="-2500" data-z="1000" data-bg="sc">
    <pre><code class="scala light"><div class="centered">
      def time = new java.util.Date
    </div></code></pre>
  </div>

  <div id="type" class="step" data-x="2000" data-y="-2250" data-z="1500" data-bg="ss">
    <pre><code class="scala dark"><div class="centered">
      type MyMap = Map[Int, String]
    </div></code></pre>
  </div>

  <div id="boolval" class="step" data-x="1000" data-y="1000" data-bg="sc">
    <pre><code class="scala light"><div class="centered">
sealed trait BoolVal
case object TrueVal extends BoolVal
case object FalseVal extends BoolVal
    </div></code></pre>
  </div>

  <div id="boolval-or-not" class="step" data-x="1000" data-y="2000" data-z="500" data-rotate-y="45" data-bg="sc">
    <pre><code class="scala light"><div class="centered">
sealed trait BoolVal {
  def not:BoolVal
  def or(that:BoolVal):BoolVal
}
    </div></code></pre>
  </div>

  <div id="trueval-or-not" class="step" data-x="1000" data-y="3000" data-z="0" data-rotate-y="90" data-bg="sc">
    <pre><code class="scala light"><div class="centered">
case object TrueVal extends BoolVal {
  override val not = FalseVal
  override def or(that:BoolVal) =
    TrueVal
}
    </div></code></pre>
  </div>

  <div id="falseval-or-not" class="step" data-x="1000" data-y="4000" data-z="500" data-rotate-y="135" data-bg="sc">
    <pre><code class="scala light"><div class="centered">
case object FalseVal extends BoolVal {
  override val not = TrueVal
  override def or(that:BoolVal) = that
}
    </div></code> </pre>
  </div>

  <div id="booltype" class="step" data-x="2300" data-y="1000" data-bg="ss">
    <pre><code class="scala dark"><div class="centered">
sealed trait BoolType
sealed trait TrueType extends BoolType
sealed trait FalseType extends BoolType
    </div></code></pre>
  </div>

  <div id="bool-compare" class="step" data-x="1600" data-y="1000" data-scale="1.3" data-bg="sc">

  </div>

  <div id="booltype-or-not" class="step" data-x="1750" data-y="2000" data-z="-250" data-rotate-y="45" data-bg="ss">
    <pre><code class="scala dark"><div class="centered">
sealed trait BoolType {
  type Not &lt;: BoolType
  type Or[That &lt;: BoolType] &lt;: BoolType
}
    </div></code></pre>
  </div>

  <div id="or-not-compare" class="step" data-x="1500" data-y="2000" data-z="250" data-rotate-y="45" data-scale="1.3" data-bg="sc">

  </div>

  <div id="truetype-or-not" class="step" data-x="1000" data-y="3000" data-z="-1000" data-rotate-y="90" data-bg="ss">
    <pre><code class="scala dark"><div class="centered">
sealed trait TrueType extends BoolType {
  override type Not = FalseType
  override type Or[That &lt;: BoolType] =
    TrueType
}
    </div></code></pre>
  </div>

  <div id="true-compare" class="step" data-x="1000" data-y="3000" data-z="-500" data-rotate-y="90" data-scale="1.3" data-bg="sc">

  </div>

  <!--<div id="falseval-or-not" class="step" data-x="1000" data-y="4000" data-z="500" data-rotate-y="135" data-bg="sc">-->
  <div id="falsetype-or-not" class="step" data-x="150" data-y="4000" data-z="-500" data-rotate-y="135" data-bg="ss">
    <pre><code class="scala dark"><div class="centered">
sealed trait FalseType extends BoolType {
  override type Not = TrueType
  override type Or[That &lt;: BoolType] = That
}
    </div></code> </pre>
  </div>

  <div id="false-compare" class="step" data-x="575" data-y="4000" data-z="0" data-rotate-y="135" data-scale="1.3" data-bg="sc">

  </div>
{'fraction_non_alphanumeric': 0.2182478368355995, 'fraction_numerical': 0.04550370828182942, 'mean_word_length': 3.9711981566820276, 'pattern_counts': {'":': 0, '<': 411, '<?xml version=': 0, '>': 411, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1613634', 'n_tokens_mistral': 5409, 'n_tokens_neox': 4849, 'n_words': 1043}