Scheme 任何关于“的历史背景”;“阴阳之谜”;详细地

Scheme 任何关于“的历史背景”;“阴阳之谜”;详细地,scheme,continuations,Scheme,Continuations,关于“阴阳之谜”的问题已经有很多了: (我想这是第一个) (这是我的问题) 。。。(可能有些东西我还没找到) 我想知道是什么时候和谁发现了这颗美丽的编程珍珠。所以我深入研究。以下是我的发现: 第一个问题是在2010年发布的,涉及到一个问题 该页面的当前版本引用了尹旺的博客 不幸的是,他关闭了自己的博客,但截至2012年7月27日,该博客在中可用 此web博客涉及第一个堆栈溢出问题 这意味着维基百科的文章是在第一个问题被问到后更新的 维基百科的文章历史显示,最初的阴阳谜题是在2009年由

关于“阴阳之谜”的问题已经有很多了:

  • (我想这是第一个)
  • (这是我的问题)
  • 。。。(可能有些东西我还没找到)
我想知道是什么时候和谁发现了这颗美丽的编程珍珠。所以我深入研究。以下是我的发现:

  • 第一个问题是在2010年发布的,涉及到一个问题
  • 该页面的当前版本引用了尹旺的博客
  • 不幸的是,他关闭了自己的博客,但截至2012年7月27日,该博客在中可用
  • 此web博客涉及第一个堆栈溢出问题
  • 这意味着维基百科的文章是在第一个问题被问到后更新的
  • 维基百科的文章历史显示,最初的阴阳谜题是在2009年由一名注册用户在没有任何引用的情况下添加的
现在,我失去了2009年之前追溯历史的所有线索。这似乎是这样的情况,这一难题是众所周知的,在2009年,至少在一些社会。因为最初的谜题在Scheme中,所以我假设它是Scheme用户组


有谁能展示更多关于这方面的历史细节吗?

来自1999年的comp.lang.scheme:

发件人:mad.。@news.ens.fr(大卫·马多尔)
主题:呼叫/抄送思维障碍者
日期:1999/06/24
消息ID:#1/1
X-Deja-AN:493362808
组织:高等师范学院
新闻组:comp.lang.scheme
我(尽管是意外地)采用了以下方案:
(让*((尹)(兰姆达(福)(新线)福)
(呼叫/抄送(lambda(bar)bar)))
杨(lambda(foo)(写char\*)foo)
(调用/抄送(lambda(bar)bar(())))
(阴阳)
(如果你想了解整个故事,我发明了一种语言(叫做
``Unlambda“,本质上是lambda演算的一个实现
没有lambda操作),这是专门为
混淆,谁的解释器是用Scheme写的;我写过
其中有一个超过600个字符长的程序来编写
连续整数(用一行星号写出每个整数)。
然后我在语言中添加了call/cc操作,而
通过实验,我发现一个12个字符的程序可以执行
与我的较长程序完全相同的任务,即``r`ci`.`ci(其中
`表示应用,c表示调用/cc,i表示标识,r和。*表示
基本上是换行和写*)。将此程序转换回
Scheme给出了我上面打印的东西。好吧,这就是全部
这个故事,我并没有说它有趣。)

FWIW 1999年在comp.lang.scheme集团中提到:非常感谢!这篇文章清楚地说明了这一现象的起源是由于Unlambda语言的发明,这是一个计算机发现的术语,它产生了一个特定的结果。那么,我应该说这是一个计算机发现的程序吗?我把答案变成了一个注释。FWIW这个谜题已经在comp.lang.scheme中讨论过多次了,所以它值得翻阅档案。没关系。如果我们发现比这更早的东西,我们可以更新答案。但是这一个看起来很像,因为它是从Unlambda转换而来的,找到它是有原因的——它是该语言中生成结果的最短程序。
From: mad...@news.ens.fr (David Madore)
Subject: call/cc mind-boggler
Date: 1999/06/24
Message-ID: <7ktbid$a29$1@nef.ens.fr>#1/1
X-Deja-AN: 493362808
Organization: Ecole normale superieure
Newsgroups: comp.lang.scheme

I sumbled (accidentally as it were) upon the following Scheme program:

(let* ((yin ((lambda (foo) (newline) foo)
             (call/cc (lambda (bar) bar))))
       (yang ((lambda (foo) (write-char #\*) foo)
              (call/cc (lambda (bar) bar)))))
  (yin yang))

(If you want the full story, I was inventing a language (called
``Unlambda'', essentially, an implementation of the lambda calculus
without the lambda operation) that is specially designed for
obfuscation, and whose interpreter is written in Scheme; I had written
a single program in it that was over 600 characters long to write the
integers consecutively (writing each integer by a line of asterisks). 
Then I added the call/cc operation to the language, and while
experimenting with it I found that a 12-character program performed
exactly the same task as my longer program, namely ``r`ci`.*`ci (where
` means apply, c means call/cc and i is the identity, r and .* are
essentially newline and write *).  Converting this program back to
Scheme gives the thing I have printed above.  Well, that's the whole
story, I didn't claim it was interesting.)