#!/usr/bin/perl use strict; use warnings; my $name; my $upto; my @response = ("That's interesting.","Eh, boring...","Ugh.","Cool! Keep up the good work!"); sub april { print "Hi, my name is April! What's yours? "; chomp($name = ); print "Hi ", $name, ", nice to meet you! What are you up to? "; for (;;) { chomp($upto = ); $upto eq "nothing" and last; print $response[rand @response], "\n"; print "Anything else? "; } print "Goodbye, $name!\n"; } april(); #### #!/usr/bin/perl use strict; use warnings; my @response = ( "That's interesting.", "Eh, boring...", "Ugh.", "Cool! Keep up the good work!" ); chat('April', @response); sub chat { my ($my_name, @responses) = @_; print "Hi, my name is $my_name! What's yours? "; chomp(my $name = ); print "Hi $name, nice to meet you! What are you up to? "; my $response = ''; until ($response eq 'nothing') { chomp($response = ); print $responses[rand @responses], "\n"; print "Anything else? "; } print "Goodbye, $name!\n"; } #### (define (new-if predicate then-clause else-clause) (cond (predicate then-clause) (else else-clause))) (define (sqrt x) (define (sqrt-iter guess x) (new-if (good-enough? guess x) guess (sqrt-iter (improve guess x) x))) (define (improve guess x) (average guess (/ x guess))) (define (average x y) (/ (+ x y) 2)) (define (good-enough? guess x) (< (abs (- (square guess) x)) 0.001)) (sqrt-iter 1.0 x))