Dan*_*iel 3 lambda scheme functional-programming racket
我正在尝试编写一个更高阶的Racket函数,该函数接受一个变量的一阶函数并返回其反函数.我知道它必须从这样的事情开始:
(let [(inverse (lambda (f)
(lambda (y)
... )))])
我想这是因为inverse必须返回一个函数,该函数的功能y,并返回x这样(= (f x) y).换句话说,逆的契约是这样的:
; inverse : (number? -> number?) -> (number? -> number?)
Run Code Online (Sandbox Code Playgroud)
我只是难过想弄清楚elipses在哪里?
编辑:为了回应人们说这是不可能的,我愿意接受一个反函数,当给定y返回一个可能的x.在回复关于没有反转功能的评论时,请注意我所拥有的合同f.它是一个(number? -> number?)映射,因此具有逆.
对于一般情况,给定一个任意函数,f你无法分辨它的反函数是什么.更糟的是,一个给定的功能可能没有逆可言 -例如:输入功能可以执行的MD5哈希值,它没有逆.对不起,您的问题没有答案.
| 归档时间: |
|
| 查看次数: |
1110 次 |
| 最近记录: |