Talk:Banana Scheme

From Esolang
Jump to navigation Jump to search

Um, this looks like a series of Grape Schemes, not a Banana Scheme. --Ihope127 13:34, 7 Jun 2006 (UTC)

Is this some actual reference I am not getting? (and what about onions?) --Ørjan 14:16, 7 Jun 2006 (UTC) Search for "grape" or "banana", and note that the definition of the banana hierarchy shifted to start from a banana 0 machine. --Ihope127 17:45, 7 Jun 2006 (UTC)
Oh... then is Banana Scheme the one that can invoke H for any "Grape Scheme"? --Ihope127 17:47, 7 Jun 2006 (UTC)
Scheme-N for natural number N is grape N. Scheme-Omega is banana 0. --Lament

Oerjan, why did you change H from being a special form to being a function? I think it makes sense for (H 1 code) to be an illegal instruction in Scheme-1. --Lament

Because the arguments of H need not be constants. For the example Scheme-omega program to work, at least the first argument must be evaluated before you can check whether its value is legal, and for the second argument, evaluation is harmless. So I see no advantage to making it anything but a function. --Ørjan 18:31, 8 Jun 2006 (UTC)
They're not constants, but the point of making it a special form (that does evaluate its arguments) was so that (H 1 code) would be an illegal instruction in Scheme-1. This makes clearer the distinction between the languages. --Lament
It should raise an error, of course, but if this cannot be done at "compile time" anyhow, I don't see a real difference. The powerful macro system of Scheme means that it would in any case be easy to define the function and the special form in terms of each other. So in a sense it doesn't matter: Change it back if you insist.
However, the distinction can be equally well made by noting that if H is a function then it is a different function for each language. --Ørjan 12:44, 9 Jun 2006 (UTC)
Not only is it different, but it is not an illegal instruction. (H 1 x) simply does not solve the halting problem when called in Scheme-1 code. -- 17:53, 19 Dec 2006 (UTC)