> ■クイズ「Haskellで自分自身を出力するプログラムを書け」
> 
> 結城にはまだ書けないのですが…
> Perlでは以前書いたことがあります。
> 以下のようになります。
> 
> $q=q(print"\$q=q($q);$q");print"\$q=q($q);$q"
> 
> これを動かすと、これと同じ文字列を出力します。
> 
> > type self.pl
> $q=q(print"\$q=q($q);$q");print"\$q=q($q);$q"
> > perl self.pl > out
> > diff self.pl out
> 
> Haskellではどうなるんでしょうか。

これは、

$ cat quine.hs
main=putStr(x++show x);x="main=putStr(x++show x);x="
$ runhugs quine.hs
main=putStr(x++show x);x="main=putStr(x++show x);x="

ですね。

http://www.sampou.org/cgi-bin/haskell.cgi?p=Programming%3a%b6%cc%bc%ea%c8%a2%3a%ca%b8%bb%fa%ce%f3&l=jp#5

にあります。

--nobsun

--
ML: haskell-jp / quickml.com
使い方: http://QuickML.com/