From: Hiroshi Yuki <hyuki / hyuki.com>
Subject: [haskell-jp:513] Re: 自己言及クイズ 
Date: Fri, 24 Dec 2004 07:13:29 +0900

> nobsunありがとうございます。感動です。
> 
> 私のPerlの解だと「実行部分」は後ろに来るのに、
> 
> > $q=q(print"\$q=q($q);$q");print"\$q=q($q);$q"
> 
> Haskellの解だと前に来ているのが面白いです。Lazyさが出ている。
> 
> > main=putStr(x++show x);x="main=putStr(x++show x);x="

これはPerlのように頭から実行するのでなく、プログラム自体は
定義の集合で処理系がmainから実行してくれるという性質による
ものなんで、Lazyであるかどうかとは関係ないんじゃないでしょうか。

「実行部分」が後ろ (スクリプトを逐次実行する)

(define x "(print \"(define x \" (write-to-string x) \")\" x)")(print "(define x " (write-to-string x) ")" x)

「実行部分」が前 (定義後にmainから実行)

(define (main args) (print x (write-to-string x) ")")) (define x "(define (main args) (print x (write-to-string x) \")\")) (define x ")

--shiro

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