簡體   English   中英

在Why3ML中鍵入lambdas的正確方法是什么?

[英]What is the proper way to type lambdas in Why3ML?

我想用 lambda 驗證一個函數。 例如:

  let map (t : array int) (f : array int -> array int) : array int =
    f t

但是,這會產生錯誤:

文件“map_reduce.mlw”,第 25 行,第 4-7 個字符:此應用程序使用可變類型數組 int 實例化純類型變量 'b

是否可以在 Why3 中使用 lambda 函數? 鍵入這些 lambda 函數的正確方法是什么?

Why3 中的 Lambda 函數是純函數。 特別是,它們的類型不能包含任何可變區域。 這就是為什么你的定義被拒絕。 用沒有區域的類型替換array ,例如set ,工作正常:

use set.Set
let map (t : set int) (f : set int -> set int) : set int = f t

暫無
暫無

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

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