Archive for 2015年1月|Monthly archive page

newLISP マニュアル v.10.6.2 日本語訳公開

 久々の安定版のリリース。
 新規関数として collect が追加されています。
 また、 正規表現オプションが数値だけではなく、文字でも指定できるようになっています。
 もちろん、ウェブ・ブラウザ上の newLISP in a browser も v.10.6.2 です。
 ということで、newLISP の User Manual and ReferenceCode Patterns の全訳のリリースです。

newlisp_manual-10602
CodePatterns-10602
こちらからダウンロードしてください。

 目次も含め日本語併記にしてあります。
 Lutz氏のご好意によりこちらから見ることもできます。

 いつものように、間違いやおかしな点が有りましたら、こちらの blog までご一報ください。

 以上、如何でしょうか?

FOOP で DAG する、その2

 前回の FOOP で DAG する は如何だったでしょうか?
 今回は、DAG (Directed acyclic graph)a 地点から b 地点までの経路を検索するスクリプトを追加してみます。
 ということで、コードは、

(define (DAG:search a b (res '()))
  (let (connects (DAG:search-pre b))
    (if (= connects "start") nil
      (dolist (c connects)
        (let (tmp (append (list c) res))
          (if (= (c 0) a) (push tmp DAG:result -1)
            (DAG:search a (c 0) tmp)))))))
(define (DAG:search-a2b a b)
   (setq DAG:result '())
   (DAG:search a b)
   DAG:result)

 何と DAG データの引き渡しらしき箇所がない(笑)、、、FOOP ですから。
 これを前回のスクリプトに追加して実行します。
 使い方は、

> (setq mydag2 (DAG '((a b) (b c) (b d) (b e) (g d) (c e) (d e) (e f))))
(DAG ((a b) (b c) (b d) (b e) (g d) (c e) (d e) (e f)))
> (:search-a2b mydag2 'g 'f)
(((g d) (d e) (e f)))
> (:search-a2b mydag2 'a 'f)
(((a b) (b e) (e f)) ((a b) (b c) (c e) (e f)) ((a b) (b d) (d e) (e f)))
> 

 こんな感じ。

 以上、如何でしょうか?