use v6-alpha; module Motd; sub finger (@arr) returns Str is export { my @default = ( "boring", "missing examples", ); pick @arr || @default } sub report (@x) returns Str is export { my $str = ''; my $iter = 0 ; for @x -> $x{ if ++$iter == +@x { $str = append_last($x,$str,$iter); return $str; }else{ $str ~= addtolist($x); } } } #Autrijus' "cls" sub clear returns Void is export{ system(($?OS eq any ) ?? 'cls' !! 'clear'); } sub max (Array @x) returns Int is export{ my $max; for @x->$try{ $max = $max > $try ?? $max !! $try; } $max.int } sub whisper_about (Int $sizeof_crowd, Array @x?) returns Hash is export{ my %terms; for 1 .. $sizeof_crowd { my $phrase = finger @x; %terms{$phrase}++ } %terms } sub addtolist ($x){ " $x,"; } sub append_last ($x,$string is rw,$pass){ if $pass > 2 { chop $string; "$string and " ~ pick ( "$x", "is $x", "$x, period", "$x, as well", "$x, besides", "$x, too", "$x, to boot" ); }elsif $pass > 1 { chop $string; "$string and " ~ pick ( "$x", "is $x", ); }else{ "$string $x"; } } sub matchval ($x,Hash %x,Int $cap?) returns Array is export{ my @matches; for %x.kv->$key,$value{ if $value eq $x { push @matches,$key } if $cap && +@matches == $cap { return @matches } } @matches } sub parse_args (Str $x) returns Array is export{ my @args = split ',', $x; @args } 1; =end