Как правильно вводить лямбда-выражения в 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
Другие вопросы по тегам