まずは添削から。

catいらないよね。

% cat fact.scm 
#!/usr/local/bin/gosh

(use srfi-1)

(define (fact n)
  (if (zero? n) 1
    (* n (fact (- n 1)))))

(define (main args)
  (for-each
   (lambda (i) (print i "! = " (fact i)))
   (iota
    (if (null? (cdr args)) 1 (string->number (cadr args))) 1)))
% perl -nle '$a+=tr/(){}//}{print$a' fact.scm
42

というわけで本題。括弧は{}にもう一対減らせる。

#!/usr/bin/perl -l
use strict;
use warnings;

sub fact{
  my $r = 1;
  $r *= $_ for 1..shift;
  $r;
}

print "$_! = ", fact $_ for 1..shift||20;

そこまでくれば、{}をなくすのは簡単だ。

#!/usr/bin/perl -l
use strict;
use warnings;

use subs "fact";
*fact = eval<<"fact";
sub \173
  my \$r = 1;
  \$r *= \$_ for 1..shift;
  \$r;
\175
fact
print "$_! = ", fact $_ for 1..shift||20;

とはいってもevalを使うのは反則じみている。こうするのはどうか。

#!/usr/bin/perl -l
$fact=1;print"$_! = ",$fact*=$_ for 1..shift||20;

んまてよ。Brainf?ckなら(){}もないよな。

+++++++++++++++++++++++++++++++++
>++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++
>++++++++++
>+++++++
>
>+
<<
[
>++++++++++++++++++++++++++++++++++++++++++++++++.
------------------------------------------------
<<<<.-.>.<.+
>>>>>
>
>++++++++++
<<
[->+>-[>+>>]>[+[-<+>]>+>>]<<<<<<]
>[<+>-]
>[-]
>>
>++++++++++
<
[->-[>+>>]>[+[-<+>]>+>>]<<<<<]
>[-]
>>[++++++++++++++++++++++++++++++++++++++++++++++++.[-]]
<[++++++++++++++++++++++++++++++++++++++++++++++++.[-]]
<<<++++++++++++++++++++++++++++++++++++++++++++++++.[-]
<<<<<<.
>>+
>[>>+<<-]
>>
[
<<<[>+>+<<-]
>>[<<+>>-]
>-
]
<<<<-
]

逆に普通の文字が嫌いな方は、こちらをどうぞ。

#!/usr/bin/perl
$^_^='()+#=```{|?"?~+.&"=;-[+$*:!>%/)`"`<!(!|"?~`*(@<^*',$^_^='((((.:>"?"<.>`((.(;",.((^(+<+((/-;!*()!*(=>((-!^^',$^_^='$`>:(*,+**!(^?#;((*=`_>(+>(^`%!)`)=:.&.`~%*~|_-;~',$^_=''^'+@$@&'^'^.@%@'.'$^_^"";'.$^_^"",'!~'!~('('.('`_@^!@'^'_$%(@,'.'$^_})'))

Perlは変態?こちらをどうぞ。

#!/usr/bin/ruby19
_=[*' '..?~]*'';$><<_[(__=_=~/_/).-_=~/\-/]+_[(@_=_=~/~/).-_=~/\)/]+_[__.+_=~/\#/]+_[@_.-_=~/%/]+" "+_[__.+_=~/\*/]+_[@_.-_=~/\+/]+" "+_[__+@@_=_=~/&/]+_[@_.-_=~/\(/]+_[__+@@_]+_[__.+_=~/\//]+" "+_[__.+_=~/\#/]+_[__.+_=~/"/]+_[__+@@_=_=~/%/]+_[__+@@_]+_[__.+_=~/&/]+_[@_.-_=~/,/]+?!+$/

Enjoy!

[-]>[-]++++++[<+++++++++++>-]<++.[-]>[-]++++++++[<++++++++++++>-]<+.[-]>[-]+++++++++++[<++++++++++>-]<.[-]>[-]++++[<++++++++>-]<.[-]>[-]++++++++[<++++++++++++++>-]<++++.[-]>[-]++++++++[<+++++++++++++>-]<.[-]>[-]++++++++++[<++++++++++>-]<+.[-]>[-]++++[<++++++++>-]<.[-]>[-]+++++++++[<++++++++>-]<++.[-]>[-]+++++++++[<+++++++++++++>-]<.[-]>[-]++++++++[<++++++++++++++>-]<+++.[-]>[-]++++++++[<++++++++++++++>-]<++++.[-]>[-]++++[<++++++++>-]<.[-]>[-]++++++++[<++++++++>-]<+.[-]>[-]+++++++++++[<++++++++++>-]<.[-]>[-]+++++++++++[<++++++++++>-]<+.[-]>[-]++++++++[<++++++++++++++>-]<++++.[-]>[-]++++++++[<+++++++++++++>-]<.[-]>[-]++++++++++[<++++++++++>-]<+.[-]>[-]++++++++[<++++++++++++++>-]<++.[-]>[-]++++[<++++++++>-]<.[-]>[-]++++++[<+++++++++++>-]<+++.[-]>[-]+++++++++++[<++++++++++>-]<.[-]>[-]+++++++++[<+++++++++++>-]<.[-]>[-]+++++++++++[<++++++++++>-]<+.[-]>[-]++++++++++[<++++++++++>-]<.[-]>[-]++++++++++[<++++++++++>-]<+.[-]>[-]++++++++[<++++++++++++++>-]<++.[-]++++++++++.