• Search Research Projects
  • Search Researchers
  • How to Use
  1. Back to project page

2020 Fiscal Year Research-status Report

一方向プログラミングと双方向プログラミングの融合

Research Project

Project/Area Number 19K11892
Research InstitutionTohoku University

Principal Investigator

松田 一孝  東北大学, 情報科学研究科, 准教授 (10583627)

Project Period (FY) 2019-04-01 – 2023-03-31
Keywordsプログラミング言語 / 関数プログラミング / 双方向変換 / 可逆プログラミング
Outline of Annual Research Achievements

本研究の目的は一方向プログラミング技術と双方向プログラミング技術の融合により,現実的な労力での双方向プログラミングを行うことができるプログラミング言語の設計である.
可逆プログラミングは双方向プログラミングの特殊な場合の一つであり,またそれ自身が重要な問題である.これまでの可逆プログラミング言語は,可逆な処理を基本とし,それを組み合わせることによって可逆プログラムを構成していた.しかしながら,可逆な処理は単射でなければならないため制限が強く,またしばしば単純な例についても不自然なプログラミングを要求してしまう.一方で,より多くの処理が一部の引数を「固定」することにより単射となることが知られていたが,そうした部分可逆(partially invertible)な処理を基本とするようなプログラミング言語はこれまで存在していなかった.
研究代表者らは,部分可逆な処理を基本とするような線形型付き高階部分可逆プログラミング言語Sparclを提案した.この言語では,可逆に扱われるデータとそうでないデータが型によって区別されている(可逆型).可逆型により,可逆な関数な関数を可逆型間の関数として,また部分可逆な関数をさらに可逆型でない型の引数を追加でとる関数として統一的に表現できる.また,Sparclはさらに, Sparclは可逆型の値を局所的に「固定」して普通の型の値の変換するための演算子pinを提供している.これらにより,Sparclでは可逆プログラミングを比較的自然な形で記述することが可能になっている.
この研究の成果はプログラミング言語理論分野のトップレベル国際会議の一つICFP 2020に採録された.

Current Status of Research Progress
Current Status of Research Progress

2: Research has progressed on the whole more than it was originally planned.

Reason

ICFPはプログラミング言語理論分野のトップレベル国際会議の一つであり,それに採録されたというのは非常に大きな成果である.そのため,「おおむね順調に進展している」と判断した.

Strategy for Future Research Activity

本年度の成果の発展としていくつの方向性が考えられる.
まずは,Sparclにおいて導入したpin演算子の有効性をより一般的な双方向変換の文脈で確認することである.入力が「固定」することができることは,更新の反映法をユーザが明示的に指定することのみならず,更新の反映の順序を記述することにもつながる.そのため,可逆プログラミング以上に双方向プログラミングにおける重要性は大きいことが期待される.
また,言語の効率化や表現力の強化も一つの課題である.具体的には,逆方向変換を値から値への関数とするのではなく更新から更新への変換とすることである.こうした更新の変換を行うアプローチを過去にも様々試みられてきたが,漸増計算の技術を利用することで現在の高階双方向プログラミング言語の枠組みを破壊することなくこういったアプローチを応用可能であると期待している.
別の方向性としては,例によるプログラミング(programming by example)等のプログラム合成(program synthesis)の技法との融合である.これまで,研究代表者らは,比較的自然な形でプログラミングが可能であるような双方向プログラミング技法について研究してきたが,双方向プログラミングは双方向の挙動を考える難しさがあるため通常のプログラミングに比べ難度が高い.しかしながら,HOBiTやSparclといった比較的順方向のプログラムに近い形で双方向プログラムを記述可能であるため,順方向プログラムを雛形として用い,それと逆方向の動作例から双方向プログラムが合成できれば,プログラミングのコストの逓減に有効であると予想される.

Causes of Carryover

次年度使用額が生じること自体は基金化されている経費では通常のことであるが,今年大きく次年度使用額が生じた主な理由は,コロナウィルスの影響で多くの国内外の会議がオンライン開催になり,また研究打ち合わせのための出張が行えなくなったためである.その分の予算は,研究を効率的に進めるための計算機や周辺機器等の購入などにあてる計画である.

  • Research Products

    (8 results)

All 2021 2020 Other

All Int'l Joint Research (1 results) Journal Article (1 results) (of which Int'l Joint Research: 1 results,  Peer Reviewed: 1 results,  Open Access: 1 results) Presentation (3 results) (of which Int'l Joint Research: 1 results,  Invited: 1 results) Remarks (3 results)

  • [Int'l Joint Research] University of Bristol(英国)

    • Country Name
      UNITED KINGDOM
    • Counterpart Institution
      University of Bristol
  • [Journal Article] Sparcl: a language for partially-invertible computation2020

    • Author(s)
      Matsuda Kazutaka、Wang Meng
    • Journal Title

      Proceedings of the ACM on Programming Languages

      Volume: 4 Pages: 1~31

    • DOI

      10.1145/3409000

    • Peer Reviewed / Open Access / Int'l Joint Research
  • [Presentation] Sparcl: A Language for Partially-Invertible Computation2021

    • Author(s)
      Kazutaka Matsuda and Meng Wang
    • Organizer
      プログラミングおよびプログラミング言語ワークショップ
  • [Presentation] High-Level Language for Bidirectional Transformations: Experiences and Future Directions2020

    • Author(s)
      Kazutaka Matsuda
    • Organizer
      SFDI2020: Fourth Workshop on Software Foundations for Data Interoperability
    • Int'l Joint Research / Invited
  • [Presentation] Modular Inference of Linear Types for Multiplicity-Annotated Arrows2020

    • Author(s)
      Kazutaka Matsuda
    • Organizer
      日本ソフトウェア科学会第37回大会,トップカンファレンス特別講演
  • [Remarks] 本研究に関連の深い国際共同研究プロジェクトおよびその成果をまとめたウェブページ

    • URL

      https://bx-lang.github.io/EXHIBIT/

  • [Remarks] 可逆プログラミング言語Sparclの実装

    • URL

      https://github.com/kztk-m/sparcl

  • [Remarks] 可逆プログラミング言語Sparclに関するいくつかの性質のAgdaによる形式化

    • URL

      https://github.com/kztk-m/sparcl-agda

URL: 

Published: 2021-12-27  

Information User Guide FAQ News Terms of Use Attribution of KAKENHI

Powered by NII kakenhi