Welcome to the Monastery PerlMonks

### Re: Just Another Godel, Escher, Bach hacker

by diotalevi (Canon)
 on Jun 25, 2004 at 20:10 UTC ( #369739=note: print w/replies, xml ) Need Help??

in reply to Just Another Godel, Escher, Bach hacker

Nice. Reading this was like comfort food.

There's a spoiler in the readmore.

1. Fill @M with "Just another "
2. Fill more with "strange loop"
3. Nested godels on the stack while the global @U has data so the "Perl hacker," portion is just overwritten during \$l = of escher(). Here \@I is just an iterator (though it contains some tantalizingly familiar data) so that @U can be popped properly.
P( e( r( l( ( h( a( c( k( r( ,( "\n" ) ) ) ) ) ) ) ) ) ) )
4. Pretend to do something with @M though really this is just another loop to go extract more stuff from the global @U.
J( u( s( t( ( a( n( o( t( h( e( r( "strange loop" ) ) ) ) ) ) ) ) ) ) ) )
5. print
```#! /usr/bin/perl -w
use strict;
use vars qw( @U );

my @M = split '',  "Just another ";
my @I =split '', "Perl hacker,";
@U = reverse @M;
unshift( @U,
split '',
"pool egnarts" );
print godel( godel( sub{ "\n" },
\ @I ),
\ @M )->();

sub godel
{
my (\$a, \$l) = @_;
return \$a unless @\$l;
my \$x = shift @\$l;

return escher( \$x,
godel( \$a, \$l ) ) ;
}

sub escher
{
my (\$l, \$m) = @_;

return
sub
{
\$l = pop @U if @U;
return \$l . \$m->();
};
}
[download]```

Replies are listed 'Best First'.
Re^2: Just Another Godel, Escher, Bach hacker
by FoxtrotUniform (Prior) on Jun 25, 2004 at 23:01 UTC

Nice summary! (readmore is spoily)

So if perl were Haskell, what else would you have here?

Log In?
 Username: Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://369739]
help
Chatterbox?
 [hippo]: That's some Joycean spam.

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (10)
As of 2018-05-22 12:26 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
World peace can best be achieved by:

Results (163 votes). Check out past polls.

Notices?