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

田中 秀知 hidetomo @ tanaka.email.ne.jp
2018年 2月 5日 (月) 01:01:08 JST


私は、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 メーリングリストの案内