1つの変数の1次関数を取り、その逆関数を返す高階ラケット関数を作成しようとしています。私はそれがこのような何かから始めなければならないことを知っています:
(let [(inverse(lambda(f) (ラムダ(y) ...)))])
を取り、次のように返すinverse
関数を返す関数をとらなければならないので、これを考えました。言い換えれば、逆の契約は次のようなものです。y
x
(= (f x) y)
; inverse : (number? -> number?) -> (number? -> number?)
楕円がどこにあるのかを理解しようとして困惑していますか?
編集:これは不可能だと言う人々に応えて、私は与えられたときにy
可能性を返す逆関数を喜んで受け入れますx
。逆関数を持たない関数についてのコメントに応えて、私が持っている契約に注意してくださいf
。これは(number? -> number?)
マッピングであるため、逆になります。