kiyoka.2007_12_15 RSSPLAIN

Related pages: !kiyoka.blog.list !kiyoka.blog.2007_12
555555555555555555555555555555555555555555
5

[OldType][Kahua]Kahua対応で行き詰まる

5

SXMLから高階タグ関数に変換しようとして、行き詰まった...

5

ヤッターできたーと思ったら、出来てなかった。

5
;; utility : sxml to highger-order-sxml
5
(define (sxml->higher-order-tag sxmls)
5
  (let1 tag-list
5
        '(
5
          tt i b big small em strong dfn code samp kbd var cite abbr 
5
          acronym sub sup span bdo br body address div a area link img 
5
          hr p h1 h2 h3 h4 h5 h6 pre q blockquote ins del dl dt dd 
5
          ol ul li form label input select optgroup option textarea fieldset
5
          legend button table caption thead tfoot tbody colgroup col 
5
          tr th td head title base meta style script noscript
5
          applet param object embed noembed html @ @@)
5
5
        (let rec
5
            ((sxmls sxmls))
5
            (match sxmls
5
                   (()  '())
5
                   (((and (name . _) sxml) . rest) ;; generic node
5
                    (cons (rec sxml)
5
                          (rec rest)))
5
                   ((other . rest)
5
                    (cons
5
                     (if (and (symbol? other) (member other tag-list))
5
                         (string->symbol
5
                          (string-append
5
                           (symbol->string other)
5
                           "/"))
5
                         other)
5
                     (rec rest)))))))
5

 

5

この関数を適用すれば、高階タグ関数にできるだろうと思ったが無理だな。

5

このS式をどうやって、関数にするんだっけ?evalするだけで良いのか?

5

実行結果はこんな感じ。

5

 

5
oldtype(a4p:3w1wh)> (sxml->higher-order-tag '(div (@ (lineno 1)) (h2 "行指向のWiki記法")))
5
(div/ (|@/| (lineno 1)) (h2/ "行指向のWiki記法"))
5

 

5

本当はクロージャが返らないと行けないんだけど。

5

この関数は練習で書いてみたが、Wikiパーサーが返す形式としてはSXMLでは柔軟性が無いのでもっと中間的な形式にする予定。

5