在像 Haskell 或 Idris 這樣的語言中,是否可以創建一種資料型別來檢查函式的輸入向量是否是單一的?也就是說,我可以創建一個資料型別 SumsToOne 來檢查向量加起來是否為 1 等?
uj5u.com熱心網友回復:
是的。在伊德里斯,就像你說的那樣。您可以用元素總和為一的證明包裝一個串列
data SumsToOne : Type where
STO : (xs : List Int) -> {auto prf : sum xs = 1} -> SumsToOne
盡管如果按資料型別指的是證明,而不是元素,您可以
go : (xs : List Int) -> {auto prf : sum xs = 1} -> <whatever you're returning>
證明是型別的sums xs = 1。prf只是函式引數名稱, auto這意味著如果可以的話,Idris 會為您找到證明。
我不知道這是否適用于浮點元素。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/462862.html
