Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
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->(); }; }


Comment on Re: Just Another Godel, Escher, Bach hacker
Download Code
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?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (3)
As of 2015-07-03 22:28 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (57 votes), past polls