Article View: fj.lang.lisp
Article #157Re: MS-DOS 動作可能な LISP を探しています。
From: KURODA Hisao / くろだ ひさお
Date: Mon, 30 Mar 1998 00:00
Date: Mon, 30 Mar 1998 00:00
63 lines
2912 bytes
2912 bytes
In article <01bd599f$6612eb70$618bf7ca@melchior> "Seiji Mizumoto" <ayanami0@kt.rim.or.jp> writes: | > > (defun p () (p)) | > P | > > (p) | > error: evaluation stack overflow | | 上記の記述でFreeBSDの世界でもスタックオーバーフローを起こすのですか... Common Lisp系のインタープリタだと末尾再帰は見てくれないと思いますので、 スタックオーバーフローになります。大抵のCommon Lispではコンパイラにか ければ末尾再帰処理をしてくれますが、640M環境では求めるのが無理なような 気がします。 しっかり実装されたSchemeならば末尾再帰を見てくれますので、次のようなプ ログラムは無限ループになります。 SCM version 5b2, Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 Free Software Foundation. > (define (p) (p)) ;Evaluation took 0 mSec (0 in gc) 18 cells work, 33 bytes other #<unspecified> > (p) | 再帰処理を行うのが奇麗なコーティングだと思っているのですが、この場合、 | プログラムのループ処理等の使用には(DO (....)) とかのループ処理を行う関数を | 用いた方が良いのでしょうか? u-n?! このあたりをエレガントにやりたいならば、末尾再帰を見てくれるSchemeにノ リカエるのをお薦めします^^。 | (setq xx '( A1 A2 A3 A4 .....)) | | でxxのリスト(?)のA1/A2/A3......の値をA1をB1/A2をB2/A3をB3に置き換えを行う | 場合についてどの様に行えば良いのでしょうか?(イメージは通常の配列処理です) | | A1については | | (setq xx (cons 'B1 '(cdr xx)) ) | | で、xxのリストは(B1 A2 A3 A4 | ....)となるのは、理解できたのですが、関数として | A2または、A3....の置き換えを実現する場合、どの様に考えれば良いのか悩んで | います。 お手数ですが、ヒントを教えて頂けましたら幸いです。 「置き換え」が破壊的かそうで無いかで違ってきますが、 > (setq xx '(a1 a2 a3)) (A1 A2 A3) > (rplaca (cdr xx) 'b2) (B2 A3) > xx (A1 B2 A3) > (rplaca (cddr xx) 'b3) (B3) > xx (A1 B2 B3) > とかでは駄目ですか? ;;; $Id: .signature,v 1.3 1996/09/20 07:06:26 kuroda Exp $ (define (くろだ ひさお) (email kuroda@msi.co.jp))
Technical Details
Message-ID:
<KURODA.98Mar30183656@msi.co.jp>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS X-Google-Thread: 1421c0,f4eac1decc4bb3d1 X-Google-Attributes: gid1421c0,public From: kuroda@msi.co.jp (KURODA Hisao / くろだ ひさお) Subject: Re: MS-DOS 動作可能な LISP を探しています。 Date: 1998/03/30 Message-ID: <KURODA.98Mar30183656@msi.co.jp> X-Deja-AN: 339076313 X-Nsubject: Re: MS-DOS $BF0:n2DG=$J(B LISP $B$rC5$7$F$$$^$9!#(B Content-Type: text/plain; charset=ISO-2022-JP Organization: Mathematical Systems Inc.,Tokyo,Japan / 株式会社 数理システム Mime-Version: 1.0 Newsgroups: fj.lang.lisp