function - 寻找反函数
问题描述
我想知道是否有一种系统/通用的方法可以在 Haskell 中找到反函数。
假设函数是双射的。喜欢:
map (+1) . map (\x -> x-1) == id
transpose . transpose == id
(有趣的是,fun 自己喜欢transpose
并且reverse
是逆函数。)我们可以手动找到这些函数的逆函数。
虽然函数不是双射的,但不能:
f = (*0)
sum
我还发现具有两个参数的函数可能是也可能不是双射。因为map
, likemap (+1)
是双射的,而map (*0)
不是。
两个双射函数的组合也是双射的(仅考虑一个参数时):
g = transpose . map (map (+1))
h = map (map (\x->x-1)). transpose
g . h == id
(对于h = f . g
,如果我们可以找到f'
and g'
,那么我们可以找到h' = g' . f'
)
那么如果我们限制在一个双射函数f :: a -> b
,有没有一种系统的方法来找到f' :: b -> a
一些双射函数的组合的反函数或反函数?
解决方案
推荐阅读
- r - geom_path 没有画线
- matlab - 没有出现任何错误,但图像没有显示在 MATLAB 中
- javascript - 使用 Cheerio 时禁止 403
- javascript - 如何通过 Acrobat JS 设置富文本缩进?
- c# - ASP.NET Core MVC - 在同一视图中获取数据和处理 404
- c++ - 将字符串转换为 int 和 char
- python - Python 返回组中的第一次出现
- ios - WebRTC SDK iOS RTCIceCandidatePairStats
- javascript - 存根未被调用
- c++ - c++错误“用'override'声明的成员函数没有覆盖基类成员”