Как правильно вводить лямбда-выражения в Why3ML?
Я хочу проверить функцию с помощью лямбды. Например:
let map (t : array int) (f : array int -> array int) : array int =
f t
Однако это приводит к ошибке:
Файл "map_reduce.mlw", строка 25, символы 4-7: это приложение создает переменную чистого типа 'b с изменяемым массивом типов int
Можно ли использовать лямбда-функции в Why3? Как правильно набирать эти лямбда-функции?
0 ответов
Лямбда-функции в Why3 - это чистые функции. В частности, их тип не может содержать изменяемую область. Вот почему ваше определение отвергается. Заменаarray
с типом без области, например, set
, работает отлично:
use set.Set
let map (t : set int) (f : set int -> set int) : set int = f t