CommonLisp Scheme Part13at TECH
CommonLisp Scheme Part13 - 暇つぶし2ch668:デフォルトの名無しさん
05/08/15 23:19:44
>>667からvalues関係を取っ払ってみた。
そんだけ。

(define (iexpr->list xs)
 (define (f xs level rs)
  (if (null? xs)
    (cons xs (reverse! rs))
    (let ((sym (caar xs)) (l (cdar xs))) 
     (cond ((= l level)
         (f (cdr xs) l (cons sym rs)))
        ((< l level)
         (cons xs (reverse! rs)))
        (else
         (let ((x (f xs l '())))
          (f (car x) level (cons (cdr x) rs))))))))
 (cdr (f xs 0 '())))

>(iexpr->list '((a . 0)(b . 1)(c . 4)(d . 5)(d . 2)(e . 3)(f . 0)))
=>(a (b (c (d)) (d (e))) f)
なかなか面白いですな。
これ使って何かに繋がらないかな。
すぐ思いつくのはGUIコントロールの階層表現ぐらいだけど。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch