柯里化世界_风闻
code2Real-有人就有江湖,有code就有bug2022-02-24 09:41
爱因斯坦说:世界上最不可理解的事情,就是这个世界是可以理解/认知的。
杨振宁说:这个世界的物理学定律好像排着队,等着人们去发现。
以前,对这两位大神的话没有感觉,在我看来,即使我们这个时代的科技高度发达,所能理解和认识的自然规律也是沧海一粟,我们只是摘了最容易摘的果实,在海边发现几个精美的贝壳,而真理的大海,我们可能仍然没有发现。
在学了函数式编程(FP)之后,我的感觉发生了变化。
在FP中,函数是一等公民,可以作为参数直接传给函数。
在非FP编程语言中,函数的参数只能是值或引用,不能是函数。
在函数式编程中有一个很重要的概念:柯里化(currying)。
百度的解释是:
在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。这个技术由 Christopher Strachey 以逻辑学家 Haskell Curry 命名的,尽管它是 Moses Schnfinkel 和 Gottlob Frege 发明的。
在非FP编程语言中,一个函数只有得到所有参数才能计算,就象一辆公交车等上满人后才发车,然后直接开到终点,中途没有停靠站,否则无限等待。
在FP中,公交车不需要等上满人才发车,只要有一个人上车就能发车,只是它走下一站后变成另一辆公交车继续等待下一个上车的人。。
一个带N个参数的函数,f1(x1,x2,…..xn),
对FP而言,如果传递一个参数x1,则返回一个函数f2(x2,x3,…xn),f2的参数比f1少一个。
马克思理论是非柯里化的,要求所有条件都满足后才能实现“共产主义”这个结果,而列宁把这个理论柯里化了,只要输入一个参数,这个世界就返回“社会主义”这个函数。
对“社会主义”这个函数继续传递参数,会得到新的函数,“社会主义”会由低级发展到高级,最终实现“共产主义”这个结果。
爱因斯坦不明白的是,为什么这个世界是可以柯里化的。
杨振宁觉得造物主象刻意给我们安排好了。
如果从FP角度看,这个世界就是一个函数,我们只要传递一个正确的参数,就会返回一个函数(物理学规律)。
当你凑足所有的参数,就会得成一个结果。(集齐七龙珠,就能召唤神龙?)
以前曾在文章中说,物理学家可能被仙人跳了,也许换一种说法是,物理学家是替XX火中取栗,或者被诱惑去揭开XX的封印(亚当在伊甸园中被蛇诱惑吃了苹果)。
当神龙出现时,物理学家真能对神龙发口施令吗?
亚当吃了苹果后能承受离开伊甸园的后果吗?
当唐僧揭了五指山的封印,放出孙悟空时,他真能约束孙悟空吗?