我最近一直在重构大量代码并将其替换为Linq查询。
消除语言偏见-Linq本质上是一组对一系列数据进行操作的Map / Filter和Reduce操作。
这让我开始思考,从理论上讲,我能走多远。我是否可以将整个代码库重写为一系列(甚至单个)Map / Filter和Reduce操作。
不幸的是,我得到报酬去做有用的事情,所以我无法做进一步的实验,但是我无法想到任何无法重构的代码结构。副作用代码可以通过monad处理。即使输出本质上是将内存地址映射到屏幕地址。
有什么东西(理论上)不能重写为Linq查询吗?
树木请看这里:stackoverflow.com/questions/250377/…–
—
blueberryfields
我一直认为,“ reduce”足以保证Turing完成(映射和过滤器可以实现为reduce操作,不是吗?)-至少,该功能语言等同于reduce。我对Linq不太了解,无法确定其中的实现与功能实现有多紧密的关系。
—
blueberryfields
我不知道,但是一个粗略的经验法则是,任何人甚至考虑编写所有代码的任何事情都将成为图灵完整的。但是,这样做的必然结果是,图灵的完成并不十分令人兴奋。
—
psr
我同意psr;我认为这个问题的有效答案需要解决图灵的完整性。证明可能会尝试仅使用这些操作来实现图灵机。
—
罗布