view slides/20170110/slide.pdf.html @ 136:98bc3495e99b

auto-Update generated slides by script
author atton <atton@cr.ie.u-ryukyu.ac.jp>
date Tue, 10 Jan 2017 18:08:11 +0900
parents
children
line wrap: on
line source

<!DOCTYPE html>
<html>
<head>
   <meta http-equiv="content-type" content="text/html;charset=utf-8">
   <title>Type System of Continuation based C</title>

<meta name="generator" content="Slide Show (S9) v2.5.0 on Ruby 2.3.3 (2016-11-21) [x86_64-darwin16]">
<meta name="author"    content="Yasutaka Higa" >

<!-- style sheet links -->
<link rel="stylesheet" href="s6/themes/screen.css"       media="screen">
<link rel="stylesheet" href="s6/themes/print.css"        media="print">
<link rel="stylesheet" href="s6/themes/blank.css"        media="screen,projection">

<!-- JS -->
<script src="s6/js/jquery-1.11.3.min.js"></script>
<script src="s6/js/jquery.slideshow.js"></script>
<script src="s6/js/jquery.slideshow.counter.js"></script>
<script src="s6/js/jquery.slideshow.controls.js"></script>
<script src="s6/js/jquery.slideshow.footer.js"></script>
<script src="s6/js/jquery.slideshow.autoplay.js"></script>

<!-- prettify -->
<link rel="stylesheet" href="scripts/prettify.css">
<script src="scripts/prettify.js"></script>

<style>
  .slide {page-break-after: always;}
</style>




</head>
<body>

<div class="layout">
  <div id="header"></div>
  <div id="footer">
    <div align="right">
      <img src="s6/images/logo.svg" width="200px">
    </div>
  </div>
</div>

<div class="presentation">

  <div class='slide cover'>
    <table width="90%" height="90%" border="0" align="center">
      <tr>
        <td>
          <div align="center">
            <h1><font color="#808db5">Type System of Continuation based C</font></h1>
          </div>
        </td>
      </tr>
      <tr>
        <td>
          <div align="left">
            Yasutaka Higa
            
            <hr style="color:#ffcc00;background-color:#ffcc00;text-align:left;border:none;width:100%;height:0.2em;">
          </div>
        </td>
      </tr>
    </table>
  </div>

<div class='slide '>
<!-- === begin markdown block ===

      generated by markdown/1.2.0 on Ruby 2.3.3 (2016-11-21) [x86_64-darwin16]
                on 2017-01-10 18:08:09 +0900 with Markdown engine kramdown (1.13.0)
                  using options {}
  -->

<!-- _S9SLIDE_ -->
<h1 id="section">研究目的</h1>
<ul>
  <li>動作するプログラムの信頼性を保証したい</li>
  <li>検証を行ないやすい単位としてプログラムをコードセグメントとデータセグメントという単位で記述する</li>
  <li>プログラムはコードセグメントという処理の集合として表され、相互に接続される</li>
  <li>接続部分をメタ計算として定義し、その切り替えでプログラムの検証を行う</li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="section-1">研究内容</h1>
<ul>
  <li>コードセグメントとデータセグメントを用いて記述する言語 Continuation based C に型を導入する</li>
  <li>CbCでは接続するコードセグメント群を元にデータセグメントを定義するためにプログラムの再利用性が高めづらい</li>
  <li>型情報を用いてコードセグメントが接続可能かどうかをコンパイラやランタイムが判断できるようにする</li>
  <li>また、接続に必要なデータセグメントやスタブを自動生成する</li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="section-2">近況報告</h1>
<ul>
  <li>CbC の型の定義をしています
    <ul>
      <li>単純型付き lambda 計算</li>
      <li>直積での定義</li>
      <li>制約の列を取るようにしてみる</li>
      <li>部分型での定義</li>
    </ul>
  </li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="lambda-">単純型付き lambda 計算</h1>
<ul>
  <li>CodeSegment は 値を取って値を返すもの
    <ul>
      <li>1つの値を渡す/返すができる</li>
      <li>複数の入力なら currying でなんとかなる</li>
      <li>複数の値を返せない</li>
    </ul>
  </li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="section-3">直積での定義</h1>
<ul>
  <li>CodeSegment は直積を取って直積を返すもの
    <ul>
      <li>複数の値を渡す/返す ができる</li>
      <li>合成もできる</li>
      <li>割と良いが codesegment を取る codesegment の定義が難しい
        <ul>
          <li>pop : CodeSegment (stackImpl × (CodeSegment (stackImpl × Maybe a) t)) t</li>
          <li>(stackImpl × Maybe a) -&gt; t</li>
          <li>のみしか渡せない</li>
          <li>(stackImpl × Maybe a × b) -&gt; c とか書けない</li>
        </ul>
      </li>
    </ul>
  </li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="section-4">制約の列を取るようにしてみる</h1>
<ul>
  <li>CodeSegment は特定の field を持つ DS を取って返すもの
    <ul>
      <li>『特定のfieldを持つ』という制約は各csの InputDS が必要とする field</li>
      <li>合成したら制約が増えていく、というアイデア</li>
      <li>そもそも関数が合成できなかった</li>
    </ul>
  </li>
</ul>

<pre><code>f : CodeSegment I O []
g : CodeSegment I1 O2 []
f ∘  g : CodeSegment I O2 [O , I2]
</code></pre>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="section-5">部分型での定義</h1>
<ul>
  <li>CodeSegment は Context に含まれる DS を取ってDSを返すもの</li>
  <li>一旦 Context に変換してやることで関数合成もできる</li>
  <li>『Contextの情報から合成可能か判断できる』ので性質は OpenSystem に使えそう</li>
  <li>定義と合成が書けました</li>
  <li>が、メタ計算の定義をしようと思ったら一筋縄ではない</li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="section-6">メタ計算の定義がどうしてできないのか</h1>
<ul>
  <li>Context が確定するとCodeSegmentの定義・合成可能なのですが</li>
  <li>Stack のコードは Context に CodeSegment (next)を持つ</li>
  <li>ので Stack が定義できないと Context が定義できず、Context が決まらないとStackの実装が書けない</li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="section-7">あとやること</h1>
<ul>
  <li>メタ計算を部分型でどう書くか</li>
  <li>メタ計算がMonadになるか</li>
  <li>修論の目次</li>
  <li>修論の本体</li>
</ul>

<!-- vim: set filetype=markdown.slide: -->
<!-- === end markdown block === -->
</div>


</div><!-- presentation -->
</body>
</html>