我正在尝试编写一个高阶Racket函数,它接受一个一元的一阶函数并返回其反函数。我知道它必须像这样开始:
``` (let [(inverse (lambda (f) (lambda (y) ...)))]) ```
我之所以这么想是因为`inverse`必须使用返回一个函数的函数,并且该函数接受一个y并返回x,使得`(= (f x) y)`。换句话说,反函数的约定大致如下:
``` (let [(inverse (lambda (f) (lambda (y) ...)))]) ```
我之所以这么想是因为`inverse`必须使用返回一个函数的函数,并且该函数接受一个y并返回x,使得`(= (f x) y)`。换句话说,反函数的约定大致如下:
; inverse : (number? -> number?) -> (number? -> number?)
我正在努力破解省略号应该填什么的问题?
编辑:
回应有人说这是不可能的,我愿意接受一个反函数,当给定 y
时返回可能的 x
。针对有关该函数没有反函数的评论,请注意我对 f
的契约。它是一个 (number? -> number?)
映射,因此具有反函数。