Я предоставляю код только в том случае, когда OP предоставляет код, так что вот только что описанное решение. Счастливое кодирование!
Вы можете использовать fold-left
и предоставить процедуру, которая берет максимум аккумулятора и абсолютную разницу между двумя обрабатываемыми элементами.
fold-left
является R6RS name и находится в библиотеке (rnrs lists (6))
. Для совместимого подхода вам необходимо использовать SRFI-1 List Library. Здесь он называется fold
, а аккумулятор - последний аргумент вместо первого.
Многие реализации и языки Схемы R5RS, которые получены на языке Схемы (например, Racket), имеют левую складку, реализованную по имени foldl
. Вам нужно проверить его документацию, чтобы получить порядок аргументов по мере их изменения. Он не является частью стандарта, поэтому он не переносится между реализациями. Я призываю вас либо использовать R6RS, либо SRFI-1.