Record-type recursive member functions and the “rec” keyword

允我心安 提交于 2019-12-04 22:20:52

'let rec' isn't about defining recursive functions, but defining a binding in an environment, that includes the binding for the current variable to be bound. You could use 'let rec' just as well to define e.g. an infinite list. Often, you don't want the binding to be included in the environment, as you might want to access an earlier variable by the same name.

When you are defining the static member function, factorial, you aren't looking for a binding for a variable 'factorial', but for a type 'MyRecordType' (which is in the environment as a type definition), and if it happens to have a static member function called 'factorial', which it has.

All "member" functions are implicitly "rec" within the type they're defined in.

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