論文:從第一原理匯出依賴型別 OOP

banq發表於2024-06-24


本文提出了一種新穎的方法,從第一原理推匯出依賴型別的物件導向程式設計(OOP)。

題為“從基本原理推導依賴型別 OOP”,由德國圖賓根大學和德國 IPAI 的 Aleph Alpha Research 的 David Binder、Ingo Skupin、Tim Süberkrüb 和 Klaus Ostermann 撰寫。該論文探討了依賴型別物件導向程式設計 (OOP) 的概念,以及如何使用二元性、去功能化和重新功能化的原理系統地推導它。

現有OOP問題:
大多數型別能夠透過新的方式生成型別、或使用型別來輕鬆擴充套件,但不能同時實現兩者。體現了型別的生產和消費兩難:

  • 函數語言程式設計在擴充套件型別等消費者方面是易用的,但是建立或生產新型別不容易。
  • 而 OOP 在擴充套件新型別的生產者方面是易用的,但是消費使用不易用。

突破口:

  • 依賴型別程式設計:主要遵循函數語言程式設計模型的依賴型別程式設計可以從結合物件導向原則中受益。函數語言程式設計在型別依賴方面向OOP學習。

函數語言程式設計 vs. 物件導向程式設計:

  • 本文將函數語言程式設計定義為使用代數資料型別和模式匹配進行的程式設計,
  • 而物件導向程式設計則是針對介面進行程式設計來定義的,對應於型別理論中的共資料和共模式匹配概念。

使用對偶原理從第一原理推匯出依賴型別的物件導向程式設計領域。

  • 也就是說,我們不會臨時擴充套件現有的具有依賴型別的物件導向形式,
  • 而是從熟悉的面向資料語言開始,透過系統地使用去函式化和重新函式化來獲得其對偶片段。


去函式化和重新函式化:
用於系統地從函式性語言片段派生出面嚮物件語言片段。

  • 去函式化透過用資料型別建構函式和頂級應用函式替換高階函式來消除高階函式,
  • 而重新函式化則重新引入高階函式。

作者從熟悉的面向資料語言入手,透過系統地使用去函式化和重函式化,推匯出其對偶片段。

  • 核心貢獻是一個包含兩個對偶語言片段的依賴型別演算。
  • 論文提供了在去函式化和重函式化這兩個語言片段之間的型別和語義保留轉換

作者已經實現了這一語言及其轉換,並利用這一實現解釋了依賴型別程式設計中的構造如何被視為對偶性的特殊例項。

相關文章