kpreid comments on Prisoner's Dilemma (with visible source code) Tournament - Less Wrong
You are viewing a comment permalink. View the original post to see all comments and the full post content.
You are viewing a comment permalink. View the original post to see all comments and the full post content.
Comments (232)
For those of us who are going to have to learn the ins and outs of Scheme in order to play in this tournament, I've got a couple questions:
Why are the terms "passing source code" and "passing a lambda" being used interchangeably? My experience with functional programming does not allow for any inspection into a lambda except by experimentation, whereas "passing the source code" implies more direct knowledge of its internals. It seems to me to be a much more interesting competition if we didn't have to worry so much about such tangential (if interesting) canonical computer science problems such as parsing in order to play effectively.
As well as quining. I assume that there is some algorithm that will generate a quine program that emulates a specified program. But I'd prefer not to have to deal with the details of Scheme in order to implement this, unless somebody were to convince me that this were sufficiently easy. When my initial reflection of the problem has me desiring to implement solutions where effectiveness is a function of my knowledge of language specifics, I fear we've lost the spirit of what this competition should be.
I don't see any other occurrences of “a lambda” on this page, but maybe the original post has been edited.
I would assume that “a lambda” should be taken as short for “a lambda expression”, i.e. an evaluatable s-expression (a form, in Common Lisp terminology; it is unclear to me whether Scheme has a corresponding word). The result of evaluating a lambda expression is not “a lambda”, it is “a procedure [value]”. Procedures (‘functions’ in most languages) have the opaqueness you are thinking of.
(Irrelevant to this question, but relevant to the topic of use/mention, expression/value, syntax/semantics, distinctions in programming: The process of obtaining a procedure/function essentially involves three inputs:
One of the things language designers can play with is what goes in part 2 and what goes in part 3.)