vine-users ML アーカイブ



[vine-users:082940] Re: ブックマークのHTMLファイルを見やすくするソフト / プログラミング言語 Gauche、Schemeの話

  • From: 田中 秀知 <hidetomo@xxxxxxxxxxxxxxxxxx>
  • Subject: [vine-users:082940] Re: ブックマークのHTMLファイルを見やすくするソフト / プログラミング言語 Gauche、Schemeの話
  • Date: Mon, 5 Feb 2018 01:01:08 +0900
私は、VineSeedのMLアーカイブのWebページで、
Gaucheというパッケージをアップデートしましたというお知らせを見て、
Gaucheというプログラミング言語があるのを知って、
使ってみようと思って、勉強しはじめました。

Gaucheは Schemeというプログラミング言語の くくりに属しています。
私は 今までは C言語、C++ で プログラムを作る経験が多かったので、
Schemeのプログラムを作る時も、
C言語の時のプログラムの作り方で発想してしまって、
なかなか Schemeの発想に切り替わらずに 悪戦苦闘しました。

世の中には、プログラミング言語の種類が多くあるので、
別に Schemeに こだわらなくて いいのですが、
Schemeに興味を持ってしまったので、
これからも勉強してみようと思っています。

以降に、Gauche、Schemeの解説の話を載せてみます。



◆  GaucheのサイトのWebページ

  ・「Gauche - A Scheme Implementation」
        http://practical-scheme.net/gauche/index-j.html

  ・「Practical Scheme」
          http://practical-scheme.net/index-j.html
    (「Practical Scheme」というタイトルは 最初に見た時、
      「Schemeの練習」という意味に勘違いしていたのですが、
      たぶん 「実用的なScheme」「実践的なScheme」というのが正解だと思います。)

  ・「Gauche ユーザリファレンス: Top」
        http://practical-scheme.net/gauche/man/gauche-refj/index.html

  ・オフライン時のGaucheユーザリファレンスは、VineLinuxでは 次の場所に
    インストールされています。
        /usr/share/doc/gauche-0.9.5/gauche-refj.html

  ・「WiLiKi - Gauche, Scheme」
      https://practical-scheme.net/wiliki/wiliki.cgi



◆  Gauche、Schemeのプログラミング言語の解説。

  ・「Gaucheでメタプログラミング(1):ちょっと変わったLisp入門 (1/5) - @IT」
        http://www.atmarkit.co.jp/ait/articles/0810/31/news148.html

  ・「Scheme入門 スーパービギナー編 - atpons @ Lisp」
        https://sites.google.com/site/atponslisp/home/scheme/racket/schemenyuumon-1/schemenyuumon

  ・「独習 Scheme 三週間 Teach Yourself Scheme in Fixnum Days」
        http://www.sampou.org/scheme/t-y-scheme/t-y-scheme.html

  ・「お気楽 Scheme プログラミング入門  contents」
        http://www.geocities.jp/m_hiroi/func/scheme.html

  ・「もうひとつの Scheme 入門」
        http://www.shido.info/lisp/idx_scm.html

  ・「Scheme - Expressions」
        https://www.cs.cmu.edu/Groups/AI/html/r4rs/r4rs_6.html

  ・「Scheme演習 第3回 - Scheme演習」
        http://www-ui.is.s.u-tokyo.ac.jp/~hara2001/scheme/material/3/3.mtd.column.html

  ・「説明のないとってもシンプルなサンプルプログラム集(Gauche)」
        http://simplesandsamples.com/hello.scm.html

  ・「初めてのGauche - Qiita」
        https://qiita.com/kou_tana77/items/b1638e8ae2630cc82a40

  ・「Learn Scheme in 15 minutes」
        http://web-artanis.com/scheme.html

  ・「逆引きScheme: 一覧」
        http://tips.cddddr.org/scheme/index.cgi?c=a

  ・「プログラミング言語 Scheme の解説」
        http://www7b.biglobe.ne.jp/~saia/scheme.html

  ・「なんでも再帰」
        http://practical-scheme.net/docs/tailcall-j.html

  ・「なんでもλ」
        http://practical-scheme.net/docs/lambda-j.html



◆  Gaucheプログラムのテスト動作の確認の方法。
  ・「Gaucheでプログラミング (2/4)」
        http://www.atmarkit.co.jp/ait/articles/0812/17/news149_2.html

  ・goshのREPLは、(exit)と入力すると、終了します。



◆  WindowsでGaucheを動かす件について。

  ・Windowsに MinGWというソフトをインストールし、Gaucheをインストールします。
    Gaucheが MinGWを利用して動くという形に なります。

  ・「MinGW(GCC)のインストール(Windows10)」
      http://windows.blogo.jp/programming/install_mingw_gcc

    ・上記の方法でインストールに失敗する場合は、MinGWのバージョンが古くなって
      しまいますが、次の方法でも インストールすることができそうです。
      「version 4.4.0 / HOWTO Install the MinGW (GCC) Compiler Suite」
          http://www.mingw.org/wiki/InstallationHOWTOforMinGW#comment-781
      「MinGW - /MinGW/Base/gcc/Version4/Previous Release gcc-4.4.0 」
          https://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/Previous%20Release%20gcc-4.4.0/
      ・「7zip」というファイル圧縮ソフトで、ファイル名の
        拡張子「.lzma」「.tar」が 解凍できるようです。

  ・「Windows用バイナリインストーラ - Gaucheダウンロード」
        http://practical-scheme.net/gauche/download-j.html
    ページ先頭から8割ほど進んだ所の「Windows用バイナリインストーラ」の章に
    書いてあります。

  ・「Windowsコンソール」
        http://practical-scheme.net/gauche/gmemo/index.cgi?Windows%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB

  ・「Gauche : Windowsコンソール関連」(2018年2月時点で Gauche v0.9.5での話)
        http://practical-scheme.net/wiliki/wiliki2.cgi?Gauche%3AWindows%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E9%96%A2%E9%80%A3

  ・「Gauche : Windowsコンソール対応」(2018年2月時点で Gauche v0.9.6での話)
        http://practical-scheme.net/wiliki/wiliki2.cgi?Gauche%3AWindows%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E5%AF%BE%E5%BF%9C

  ・「MinGW, MSYS 周りの知識整理: 参考までに cygwin について - Qiita」
        https://qiita.com/Yuki-Inoue/items/58d3bb564cf2c20fde97

  ・「Gauche : Windows特有の実行ファイル」
        http://practical-scheme.net/gauche/man/gauche-refj/GauchewoQi-Dong-suru.html#WindowsTe-You-noShi-Xing-huairu



◆  省略したプログラムの記述の仕方。
  ・「lambda」の代わりに「^」と 書くことができます。
    これはGauche独自の仕様拡張との事です。

  ・リストの何番目かの要素を返す関数は list-ref ですが、
    Gaucheの場合、万能アクセサ「~」という物があり、
    list-ref の代わりに使えます。
    「万能アクセサ - Gauche」
        https://practical-scheme.net/gauche/man/gauche-refj/Shou-Sok-kitoJi-Sok-.html#g_t_4e07_80fd_30a2_30af_30bb_30b5



◆ 「'」についての説明。
  ・以降の文章で、「'」が出てくるので、
    リテラル式 「quote」、「'」について、ここで説明しておきます。
    「Scheme 入門 3. リストを作ろう」
        http://www.shido.info/lisp/scheme3.html
      ページ先頭から5割ほど進んだ所の「3. quote」の章に書いてあります。
    だいたいの意味で言うと、前に「'」を付けると、
    定数のような扱いになるということです。



◆  GaucheからのLinuxコマンドの呼び出しの方法(その1)。
  ・関数 process-output->string、process-output->string-list の使い方
    について 書きます。

  ・「高レベルプロセスインタフェース - Gauche」
        https://practical-scheme.net/gauche/man/gauche-refj/Gao-reberupurosesuintahuesu.html#index-process_002doutput_002d_003estring

  ・事前に モジュールを読み込んでおく必要があります。
      (use gauche.process) と 書いておきます。
    process-output->string等よりも前に 行なっておきます。

  ・ (process-output->string-list "ls /bin | head") のように
    ダブルクォーテーションで囲むこともできて、
    途中に パイプライン「|」を入れることもできるようです。



◆  GaucheからのLinuxコマンドの呼び出しの方法(その2)。
  ・関数 run-process の使い方について 書きます。

  ・「高レベルプロセスインタフェース - Gauche」
        https://practical-scheme.net/gauche/man/gauche-refj/Gao-reberupurosesuintahuesu.html#g_t_9ad8_30ec_30d9_30eb_30d7_30ed_30bb_30b9_30a4_30f3_30bf_30d5_30a7_30fc_30b9

      ・run-process-pipeline という関数もあります。

  ・事前に モジュールを読み込んでおく必要があります。
      (use gauche.process) と 書いておきます。
      run-processよりも前に 行なっておきます。

  ・引き数の cmd/argsは、形式としては リストです。

  ・cmd/argsの各要素は、x->stringで文字列に変換されるとのことなので、
    各要素をダブルクォーテーションで囲む必要はありません。

  ・子プロセスの終了を待ちたい場合はwaitキーワード 引数を使います。
      (run-process '(ls -al) :wait #t)

  ・cmd/argsの中に、リダイレクト">"等を 記述してはいけません。

  ・例えば、Linuxコマンドの出力を "calender.txt"というファイルへ
    リダイレクトしたい時は、次のような書き方になります。
      (run-process '(cal) :redirects '((> 1 "calender.txt")) :wait #t)

  ・もし、上記の"calender.txt"の部分を 変数に したいなら、
    次のような書き方になります。 output_f_nameが変数です。
      (run-process '(cal) :redirects
                     (list (list '> '1  output_f_name))  :wait #t)




◆  Gaucheで、実行形式ファイル、スクリプトを書く件について。

  ・シェルのスクリプトを書く場合は、1行目に
    「#!/bin/sh」や「#!/bin/bash」を書きますが、
    Gaucheの場合は、「#!/usr/bin/env gosh」と書くのが良さそうです。

  ・「Gauche > コマンドライン引数を使う(その1)」
        http://simplesandsamples.com/arg.scm.html

  ・「Gauche > コマンドライン引数を使う(その2)」
        http://simplesandsamples.com/args.scm.html

  ・さらに詳しい話は 次のWebページに載っています。
    「Schemeスクリプトを書く - Gauche」
        https://practical-scheme.net/gauche/man/gauche-refj/SchemesukuriputowoShu-ku.html
    「コマンドライン引数の解析 - Gauche」
        https://practical-scheme.net/gauche/man/gauche-refj/komandorainYin-Shu-noJie-Xi-.html



◆  文字列の検索、置換の話(正規表現を使った場合)。
  ・「サルにもわかる正規表現入門」
       http://www.mnet.ne.jp/~nakama/#no-one

  ・ "def"が "abcdefghi"の中に含まれているかどうかの判定。
     if文の中の判定が真になるので "yes"が選ばれます。
         (if (rxmatch #/def/ "abcdefghi")  "yes"  "no")

  ・ "klm"が "abcdefghi"の中に含まれているかどうかの判定。
     if文の中の判定が偽になるので "no"が選ばれます。
         (if (rxmatch #/klm/ "abcdefghi")  "yes"  "no")

  ・ 検索結果は、一致が見つかった場合は <regmatch>オブジェクト
     という形式で返ってきます。
     一致が見つからなかった場合は #f (論理値でいうFALSE、偽)が
     返ってきます。
     <regmatch>オブジェクトの両端を 丸括弧で囲む事で、
     評価が行なわれ、結果の文字列が返ってきます。
         (define match (rxmatch #/def/ "abcdefghi") )
         (print match)
                  =>  #<<regmatch> 0x82c8000>
         (print (match) )
                  =>  def

  ・ 文字列の変数 str2の内容に対して、
     "def"を "xyz"に 置換する処理です。
         (define str2 "abcdefghi")
         (set! str2 (regexp-replace #/def/  str2  "xyz") )
         (print str2)

  ・「正規表現 - Gaucheユーザリファレンス」
        http://practical-scheme.net/gauche/man/gauche-refj/Zheng-Gui-Biao-Xian-.html#g_t_6b63_898f_8868_73fe

  ・「Gauche:正規表現を使う」
        http://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3A%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E3%82%92%E4%BD%BF%E3%81%86

  ・「Gauche:regexp - WiLiKi」
        http://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3Aregexp



◆  関数の中で、defineを使う時について。
  ・関数の中で defineを使う場合、lambda文があって、let文があるとすると、
    位置的に let文の次あたりに define文を書かないといけないようです。
    http://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3ABugs%3Alog8#H-qa8lys



◆  C言語の関数呼び出しの際の 引き数のポインタ渡しのような事が
    Schemeで可能なのかどうかを調べた件について。

  ・「Scheme pass-by-reference - Stack Overflow」
        https://stackoverflow.com/questions/3262119/scheme-pass-by-reference

  ・「Parameter Passing in Scheme - Stack Overflow」
        https://stackoverflow.com/questions/2304481/parameter-passing-in-scheme



◆  エディタ Emacsで、Schemeのプログラムの対応する括弧を色付けする件について。

  ・Emacsで「rainbow-delimiters」というパッケージを使うと、
    プログラムの対応する括弧を色付けすることができます。
    Emacsが scheme-modeで動いている時に、rainbow-delimitersが有効に
    なるように設定しておこうと思います。
    Schemeのプログラムのファイルの拡張子が「.scm」だと
    自動的に scheme-modeに切り変わります

  ・インターネット検索で 「rainbow-delimiters」で検索してもらうと、
    色々と情報が出てくると思うのですが、
    VineLinux6.5で デフォルトでインストールされているEmacsが
    バージョン 23.3.1 で、 導入方法が インターネットの情報とは異なっていたので、
    以降に、バージョン 23の場合の やり方を書いておきます。
    行なった時のメモが不十分で、記憶で書いているところがあり、
    間違っている所があるかもしれません。

  ・package.elをインストールします。
    「package.el - Emacs JP」
        http://emacs-jp.github.io/packages/package-management/package-el.html
    Emacs23ユーザーの方は、 http://bit.ly/pkg-el23 から
    Emacs23向けの package.elをダウンロードし,
    load-pathの通ったディレクトリに配置してください
    と、書かれています。
    私は、/usr/share/emacs/23.3/lisp に package.el を 置きました。

  ・package.elを使って、rainbow-delimitersをインストールします。
    上記のWebページを参考にしてください。

  ・インストールの結果、 /usr/share/emacs/23.3/lisp に、
    rainbow-delimiters.el と rainbow-delimiters.elc が 置かれました。
    rainbow-delimiters.elのバージョンは 2.1.3 でした。

  ・rainbow-delimitersのデフォルトの状態では、色付けが薄い感じになっています。
    これを 濃いめの色に変更します。

  ・rainbow-delimiters.elの118行目から125行目です。
    次のようになっています。
(eval-when-compile
  (defmacro rainbow-delimiters--define-depth-faces ()
    (let ((faces '())
          (light-colors ["#707183" "#7388d6" "#909183" "#709870" "#907373"
                         "#6276ba" "#858580" "#80a880" "#887070"])
          (dark-colors ["grey55" "#93a8c6" "#b0b1a3" "#97b098" "#aebed8"
                        "#b0b0b3" "#90a890" "#a2b6da" "#9cb6ad"]))

  ・118行目から125行目を 次のように 書き換えます。
(eval-when-compile
  (defmacro rainbow-delimiters--define-depth-faces ()
    (let ((faces '())
          (light-colors ["#00b0b0" "#ff0000" "#0000b0" "#00ff00"
                         "#ff00ff" "#b0b000" "#00b000" "#e0e000" "#0000ff"])
          (dark-colors ["grey55" "#93a8c6" "#b0b1a3" "#97b098" "#aebed8"
                        "#b0b0b3" "#90a890" "#a2b6da" "#9cb6ad"]))

  ・rainbow-delimiters.el を コンパイルして、
    rainbow-delimiters.elc を 作り直します。
    「Emacs のバイトコンパイル | プログラマーズ雑記帳」
        http://yohshiy.blog.fc2.com/blog-entry-22.html
    管理者の権限が必要なようなので、
    「sudo -」で いったん スーパーユーザーになって、
    「emacs &」で emacsを起動して、コンパイルを行なってください。

  ・自分のユーザーのホームディレクトリ等にある「.emacs」のファイルに、
    次の内容を追加で記入します。
;;--------- rainbow-delimiters を使うための設定 ------------------
(require 'rainbow-delimiters)
(add-hook 'scheme-mode-hook 'rainbow-delimiters-mode)




◆  対応する括弧の色付けが、正規表現の中の「|」パイプラインにより
    誤作動するのを防ぐ件について。

  ・rainbow-delimitersで 対応する括弧の色付けを行なっている時、
    正規表現の中の「|」パイプラインにより、色付けが誤作動します。
    これは、Emacsのscheme.elの中の パイプラインに対する処理を
    除外することで防ぐことができます。

  ・変更には 管理者の権限が必要なので、
    「sudo -」で いったん スーパーユーザーになります。

  ・次のコマンドを行ないます。
      cd /usr/share/emacs/23.3/lisp/progmodes
      cp -p scheme.el.gz scheme.el.gz.org
      mv scheme.elc scheme.elc.org
      gunzip scheme.el.gz

  ・スーパーユーザーの状態で、「emacs &」で emacsを起動します。

  ・/usr/share/emacs/23.3/lisp/progmodes/scheme.elのファイルを開きます。

  ・scheme.elの91行目です。 次のようになっています。
    (modify-syntax-entry ?\| "\" 23bn" st)

  ・その91行目を無効化するために 次のように書き換えて、保存します。
    ;;(modify-syntax-entry ?\| "\" 23bn" st)

  ・scheme.el を コンパイルして、scheme.elc を 作り直します。
    次のWebページを参考にしてください。
    「Emacs のバイトコンパイル | プログラマーズ雑記帳」
        http://yohshiy.blog.fc2.com/blog-entry-22.html



◆  モジュールとは? (モジュールの作り方)。
  「お気楽 Scheme プログラミング入門 / オブジェクト指向編」
      http://www.geocities.jp/m_hiroi/func/abcobj07.html



◆  Gaucheから C言語のライブラリを使う件について。
  ・「Gauche:c-wrapper関連」
      https://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3Ac-wrapper%E9%96%A2%E9%80%A3

  ・「GitHub - Hamayama/c-wrapper-mg: Gauche 用の c-wrapper を MinGW 上で
                                              動くように改造したものです(実験中)」
        https://github.com/Hamayama/c-wrapper-mg

  ・「 FFI (Foreign Function Interface) とは」
        https://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3AFFI



◆  C言語からGaucheを使う件について。
  ・「 C言語からGaucheを使おう! (1) コンパイル環境を整える TECHSCORE BLO」
        http://www.techscore.com/blog/category/%e8%a8%98%e4%ba%8b/%e9%80%a3%e8%bc%89/c%e8%a8%80%e8%aa%9e%e3%81%8b%e3%82%89gauche%e3%82%92%e4%bd%bf%e3%81%8a%e3%81%86%ef%bc%81/



◆  CGIのプログラムに Gaucheを使う件について。
  ・「GaucheでCGIプログラミング」
        https://www.slideshare.net/kazh98/gauchecgi

  ・「Gauche:CGI - WiLiKi」
        https://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3ACGI



◆  GaucheからGUIを使う件について。
  ・GaucheからGTK2を使うための拡張ライブラリの件についてです。
    ページ先頭から1割ほど進んだ所の「Gauche-gtk」の項目に書いてあります。
      http://practical-scheme.net/index-j.html



◆  Gaucheでグラフィック描画を行なう件について。

  ・GaucheからOpenGLを使うための拡張ライブラリの件についてです。
    ページ先頭から1割ほど進んだ所の「Gauche-gl」の項目に書いてあります。
      http://practical-scheme.net/index-j.html

  ・「Gauche:Gauche-glサンプル」
      https://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3AGauche-gl%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB

  ・Gauche-glを動かすためには freeglutというC言語のライブラリが必要です。
    以下の話は VineLinux6.3 および 6.5 の時代の話なのですが、
    VineLinux6.3には freeglutのバージョン2.6.0がありました。
    けれど、VineLinuxのfreeglut 2.6.0では、動作しませんでした。

  ・freeglut2.8.1のソースをwebから ダウンロードして コンパイルしたところ、
    glutが 動作するようになりました。
      「The freeglut Project :: About」
          http://freeglut.sourceforge.net/
    ただし、VineLinux6.3と6.5 へのインスールの際には 問題があり、
    問題を回避するような手順が必要になってきます。
    以下に その手順を書いておきます。

  ・freeglut2.8.1をインストールするために、
    VineLinuxのfreeglutのパーッケージを削除しようとしたのですが、
    apt-getのコマンドが パッケージの依存関係がおかしくなっていると
    エラーを出すようになってしまいました。
    なので、VineLinuxのfreeglutのパーッケージを削除するという操作は
    しないようにしました。
    その代わり 下記のような手順を行なうことにしました。

  ・freeglut2.8.1を ソースからコンパイルして、インスールします。
    インストール先は デフォルトでは /usr/local/lib/に なります。

  ・以降の操作は スーパーユーザーで行なってください。
    /usr/lib/下にあるVineLinuxのlibglutをリネームして、
    次の名前に変更しました。
        libglut.so.3.9.0.vine  libglut.so.3.vine  libglut.so.vine

  ・次の操作をします。
      # cd /usr/lib
      # ln -s /usr/local/lib/libglut.so.3.9.0 libglut.so
      # ln -s /usr/local/lib/libglut.so.3.9.0 libglut.so.3
      # ln -s /usr/local/lib/libglut.so.3.9.0 libglut.so.3.9.0

  ・操作の結果としては このようになります。
      # ls -l libglut*
      lrwxrwxrwx 1 root root     31 12月 20 17:11 libglut.so ->
                                            /usr/local/lib/libglut.so.3.9.0*
      lrwxrwxrwx 1 root root     31 12月 20 17:11 libglut.so.3 ->
                                            /usr/local/lib/libglut.so.3.9.0*
      lrwxrwxrwx 1 root root     31 12月 20 17:13 libglut.so.3.9.0 ->
                                            /usr/local/lib/libglut.so.3.9.0*
      -rwxr-xr-x 1 root root 314421  3月 27  2011 libglut.so.3.9.0.vine*
      lrwxrwxrwx 1 root root     16 12月 20 16:56 libglut.so.3.vine ->
                                                         libglut.so.3.9.0*
      lrwxrwxrwx 1 root root     16 12月 20 16:56 libglut.so.vine ->
                                                         libglut.so.3.9.0*



◆  エディタやドキュメント・ブラウザで ユーザーリファレンスを
    見るという件について。

  ・Gauche本家サイトのGaucheのソースは 2018年2月時点で
    http://practical-scheme.net/vault/ の Gauche-0.9.5.tgz です。
    html版のユーザーリファレンス以外に info版のユーザーリファレンスも
    含まれているようです。make等のビルドが必要なようです。

  ・「Gaucheのユーザーリファレンスを呼び出す - (define -ayalog '())」
        http://ayato.hateblo.jp/entry/20130509/1368124378

  ・「紫ログ: Emacs上でGaucheのinfoを引く」
        http://blog.livedoor.jp/naoya_t/archives/51350496.html

  ・「Gauche:マニュアルにアクセス」
       https://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3A%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB%E3%81%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9

  ・「GaucheのドキュメントをDashに追加する - ぼっち勉強会」
        http://kannokanno.hatenablog.com/entry/2017/05/04/161642

    ・Dashというのは Macのオフラインのドキュメント・ブラウザの事だそうです。
      関連するwebページとして 次のwebページがありました。
      「Zeal - Linux, Windowsで使えるオフラインドキュメントブラウザ」
          http://syohex.hatenablog.com/entry/20131104/1383544614



◆  HTMLファイルを解析(パーズ、parse)する件について。

  ・「Scheme:htmlprag - WiLiKi」
        https://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3Ahtmlprag

  ・「html-parserをGaucheに移植」
        http://practical-scheme.net/wiliki/wiliki.cgi?%E9%BD%8A%E8%97%A4
      ページ先頭から1割ほど進んだ所の「html-parser」の章に書いてあります。

  ・「#:g1: html-parserの紹介」
        http://g000001.cddddr.org/3617797200

  ・「SXML - WiLiKi」
        https://practical-scheme.net/wiliki/wiliki.cgi?SXML

  ・「SXMLからマークアップへの変換 - Gaucheリファレンス」
        http://practical-scheme.net/gauche/man/gauche-refj/SXMLGou-Zao-woCao-Zuo-suru.html#SXMLkaramakuatupuhenoBian-Huan-

  ・「SXMLからXMLとXHTMLのシリアライゼーション - Gaucheリファレンス」
        http://practical-scheme.net/gauche/man/gauche-refj/SXMLkaraXMLtoXHTMLnosiriaraizesiyon.html#SXML_304b_3089XML_3068XHTML_306e_30b7_30ea_30a2_30e9_30a4_30bc_30fc_30b7_30e7_30f3

  ・「k16's note: はじめてでも安心 SXML入門」
        http://note.golden-lucky.net/2011/08/sxml.html






_______________________________________________
vine-users mailing list
vine-users@xxxxxxxxxxxxxxxxxxxx
http://listserv.linux.or.jp/mailman/listinfo/vine-users