好吧,对于那些从未遇到过这个词的人来说, quine 是一个“ self 复制”的计算机程序。更具体地说,它在执行时会生成自己的源代码副本作为其唯一输出。
当然,可以使用多种编程语言(但不是全部)开发 quines;但是有些语言显然比其他语言更适合产生蒯躅(要清楚地理解听起来有点主观的“更适合”,请查看 Haskell example vs. C example in the Wiki page - 我在下面提供了我更客观的定义)。
我的问题是,从编程语言的角度来看,哪些语言特性(无论是理论设计还是语法糖)使该语言更适合/有助于编写 quines?
我对“更合适”的定义是“quines 更容易编写”和“更短/更易读/更少混淆”。但欢迎您添加更多至少有点客观的标准。
请注意,这个问题明确排除了退化的情况,比如一种旨在包含“print_a_quine”原语的语言。
最佳答案
我不是很确定,所以如果你们中的任何人知道得更多,请指正我。 我同意其他两个答案,进一步解释说,蒟蒻是这样的:
Y g
其中 Y 是 Y fixed-point combinator (或任何其他定点组合器),这意味着在 lambda calculus :
Y g = g(Y g)
现在,很明显,我们需要代码是数据,g 是一个函数,它将打印它的参数。
总而言之,我们需要构造这样一个 quines 函数、打印函数、定点组合器和按名称调用评估策略。
满足此条件的最小语言是来自 Iota and Jot 的 AFAIK Zot家庭。
关于programming-languages - 有助于编写 quines(自打印程序)的语言功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3077541/