Haskell语言学习笔记(77)fix

匿名 (未验证) 提交于 2019-12-03 00:39:02

fix

fix 是一个在 Data.Function 中定义的函数,主要用于定义不动点函数。

fix :: (a -> a) -> a fix f = let x = f x in x

fix 函数的定义使用了递归绑定,比较难以理解:

fix f = let x = f x in x = let x = f x in f x = let x = f x in f (f x) = let x = f x in f (f (f x)) = let x = f x in f (f .. (f (f x)) ..) = let x = f x in f . f . ... . f . f $ x

即 fix 函数的实质是无限多次调用函数 f,直至函数 f 结束递归并产生一种能被自身调用的数据结构。
这里的最终参数 x 是一个永远不会被调用的参数,也就是一个占位符。

原文:https://www.cnblogs.com/zwvista/p/9267657.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!