簡體   English   中英

Idris 中一流類型的概念

[英]Concept of First-Classed Type in Idris

在使用 Edwin 的Type-driven Development with Idris學習 Idris 時,我了解到 Idris 的獨特屬性,即與其他編程語言相比,它的類型是第一個 class 構造,尤其是那些也具有依賴類型系統的編程語言。

在書中它談到了這種特性的潛在用途:數據庫模式、.network 協議描述等。

有了這些好處,我的問題有兩個:

  1. 難道不能用一種沒有一流類型的依賴類型的語言來完成這些任務嗎?
  2. 這種功能的缺點是什么? 為什么其他系統/語言中的類型不是第一個 class(例如在 Agda 或 Coq 中)? 我假設此功能對程序在編譯時可以檢查的內容引入了一些理論上的限制,但我不知道它是什么。

或者更具體地說:

可以將一流類型與單純的依賴類型區分開來的例子有哪些?

我希望看到一些積極的例子(好處)和一些消極的例子(它使編譯器難以做某事,或其他一些限制)。

Idris書中的“一等類型”正是Agda或Coq意義上的“依賴類型”,所以這里根本沒有區別。

HaskellOCaml中的 GADT 可以被視為依賴類型的一種形式,它包含 Idris 意義上的一流類型。 這里,有兩種不同的編程語言,值級和類型級編程,類型和值不能隨意混合。 GADT 允許依賴模式匹配,在不同的分支中我們可以了解有關類型級別值的信息。 但是我們無法了解有關運行時值的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM