Shiroが開発中のScheme処理系。
- Project Webpage
http://practical-scheme.net/gauche/index-j.html
- SourceForge
http://sourceforge.net/projects/gauche/
- Mailing List
http://lists.sourceforge.net/lists/listinfo/gauche-devel
- 日本語 Mailing List
http://lists.sourceforge.jp/mailman/listinfo/gauche-devel-jp
使用にあたっての役立ち情報
Gaucheでプログラミング
Gauche:イディオム,
Gauche:メモリリーク,
Gauche:EditingWithEmacs,
GaucheMemo:CGIを使うための準備,
Gauche:StandAloneProgram,
Gauche:プロファイラAPIの使用例,
Gauche:matchの応用,
Gauche:マニュアルにアクセス
スクリプトの例
Gauche:茶筌, Gauche:LogScanner, Gauche:ディレクトリを再帰的に処理,
Gauche:WebImageViewer, Gauche:翻訳支援スクリプト, Gauche:gdumpfs,
Gauche:htmlリファレンスの参照,
Gauche:scm2exe, Gauche:scm2cmd, Gauche:ManualIndex,
Gauche:Mailmanの制御,
Gauche:Proxyサーバ,
Gauche:メール,
Gauche:HTTPD,
Gauche:SpamFilter,
Gauche:SXMLでRDF,
Gauche:SXMLとSXPath,
Gauche:CGI:スケジュール予定表,
Gauche:CGI:スケジュール予定表:Shiro版,
Gauche:CGI:MiniWiKi,
Gauche:数式の中置記法,
Gauche:RemoteSlide,
Gauche:scm2texi,
Gauche:SpellingCorrection,
Gauche:AOBench,
Gauche:MetropolisProceduralModeling,
Gauche:LandOfLisp
ライブラリ
Gauche:カレンダー計算,
Gauche:ObjectPrevalence,
Gauche:RedBlackTree,
Gauche:Trie,
Gauche:SRE
Gauche:WadlersPrettierPrinterLibrary
Gauche:text.prettyprint
スクリプトのポーティング
Gauche:scmxlate, Gauche:tex2page, Gauche:lalr, Gauche:matchcomp
拡張ライブラリ
Gauche:MeCab, Gauche:Gauche-gtk-0.4.1 on Gauche-0.9
開発に関する情報
機能に関するメモ
Gauche:srfi, Gauche:regexp, Gauche:logger, Gauche:evalと環境,
Gauche:ExtensionBuildHelper, Gauche:DBI/DBD,
Gauche:FeatureIdentifier,
Gauche:サブプロセスでインタプリタ,
Gauche:$,
Gauche:testについて,
Gauche:Replの改善,
Gauche:include,
Gauche:ImplicitFuture,
Gauche:generator,
Gauche:スクリプトとload-path
実装に関するメモ(数値)
Gauche:数値の入出力, Gauche:拡張浮動小数点演算の謎,
Gauche:浮動小数点数をどこまで読むか,
Gauche:Bignum演算, Gauche:NumericTower, Gauche:NaNの扱い,
Gauche:Bignum->Double,
Gauche:二重丸めの落とし穴
実装に関するメモ(マルチスレッド)
Gauche:MTとシグナル, Gauche:MTとrequire, Gauche:MTと文字列,
Gauche:control.jobメモ
実装に関するメモ(入出力)
Gauche:BufferedIO, Gauche:バイナリI/O, Gauche:ソケットとcharconv,
Gauche:循環リストの読み書き,
Gauche:空白文字,
Gauche:I/Oタイムアウト,
Gauche:Textual/Binary Ports
実装に関するメモ(文字と文字列)
Gauche:charconv, Gauche:内部エンコーディング, Gauche:rfc.mime:rfc2047,
Gauche:文字カテゴリとケースマッピング
実装に関するメモ(OOP)
Gauche:GenericFunctionとModule, Gauche:ClassRedefinition
実装に関するメモ(最適化)
Gauche:VMの最適化,
Gauche:VMの最適化:JIT,
Gauche:VMの最適化:Flonumの扱い,
Gauche:グローバル変数参照の最適化,
Gauche:CompactingPair,
Gauche:Inlining,
Gauche:util.matchのinline-let,
Gauche:アドホックなletフレーム除去,
Gauche:継続フレームの縮小
実装に関するメモ(コンパイラ、VM)
Gauche:MultiPhaseMacro,
Gauche:MacroProblem,
Gauche:シグナルキューのオーバフロー,
Gauche:EscapeHandlerAndFrameRelocation,
Gauche:VM命令セットの変更とビルド,
実装に関するメモ(メモリ, GC)
Gauche:GC,
Gauche:Gtkとメモリ管理,
Gauche:シンボルのgc,
Gauche:OOM,
Gauche:ハッシュテーブルとgc
実装に関するメモ(その他)
Gauche:ImmutableObject,
Gauche:automake+libtoolize,
Gauche:クロージャの中身,
Gauche:組み込み関数の再定義,
Gauche:autoload:define-methodとの干渉,
Gauche:glob,
Gauche:LargeFileSupport,
Gauche:YAGHG,
Gauche:UndefinedVariableHandler,
Gauche:letrec*,
Gauche:ImportModifier,
Gauche:ABICompatibility,
Gauche:append-reverse,
Gauche:dolist系ループで複数変数
拡張に関するアイディア
Gauche:SessionFramework,
Gauche:streamとgenerator,
Gauche:イテレータの反転の汎用化
その他の議論
- やっぱり、言語の仕様はR5RSにおちるように開発してもらえるとうれしいっす。
のちのち、hobbit?なんかでcompileしたい欲求がふつふつと沸いてきそうで。
hobbit?のfunction変換tableとgcを書き換えると、gaucheのlibraryが使えるとか、
そんな魔法なようなことを望んでいます。 --toki?
- hobbit?はソースの状況見るとメンテできない様な・・(個人的見解ですが)--moxth
- とりあえずR5RSで書いたものはその通り動く、というのは前提にしています
(シンボルの大文字小文字の区別はありますが)。その上で、
楽をしたければ拡張構文を使うと。大抵の拡張はマクロを書けば
他のSchemeでも動くはずですが、例えば #/regexp/ みたいなのは駄目ですね。
これは、互換性を失っても余りある利便性があると考えて採用したものです。-- Shiro
- 0.6で入った、(info 'fn) なんですが、fn うろ覚えの自分にはちょいつらいです。ワイルドカードでも使えたらなあと、info.scm を見てました。(make-hash-table 'string-contains) なんてのが使えると嬉しいかなと思ってます。--sakae (2002/08/02 05:08:20 PDT)
- (Shiro) 当面、apropos と併用、というのではだめですか。
もちろんinfoの中でaproposを呼ぶようにするのがいいんですが、
複数の候補からユーザに選択させるインタフェースとかが必要になるので
もう少し練ろうと思っています。なんか良いアイディアがあったら教えて下さい。
(2002/08/02 11:30:34 PDT)
- USER I/F はいつも悩みの種ですね :-). aproposの結果をhtml化してw3mか何かから使って貰うってのは、大げさすぎで美しくないし... 画面制御のライブラリーでも使う
のが、現実的なんでしょうかね? --sakae (2002/08/03 22:42:44 PDT)
- 内部コードUCS-2(or UCS-4)対応
UTF-8だと不便な事が、、、もうそのままUNICODEでCODECでも付加した方がいい気もします。でもJavaみないになるのもあれだな、、
- うーむ悩ましい。mbがいいかwcがいいか、できれば比較してみたいんですが、
かなり大幅に内部を書き換えなければならなさそうなので… Shiro
- 難しいというか変更が大きい事は認識して記述してますが、、理想はPythonに近い形式だったりするのですが、あれはあれで問題あるのだったり、、からあげうまうま
- 「こういう使い方だとUTF-8は不便!」というケースを教えて頂ければ、
考えのとっかかりになるかもしれません。
Pythonて内部はwcharでしたっけ。Py_UNICODEは16bit幅って書いてあるな…という
ことはUTF-16? Shiro
- UTFはUnicodeをnビットのストリームに流す際の符号化方法を決定したもの。Unicode文字の受け渡しに便利なフォーマットにすぎません。実際の文字列処理には不向き。実際にUTF-8のままで文字列の処理を頻繁におこなうと理解いただけるかと。なんで16bitはばやとUTF-16やねん。UCS2です。からあげうまうま
- UCS2だとExtension Bとかが入らないんじゃないでしょうか。
サロゲートを入れるとUTF-16になってしまう、と理解しているのですが。
あと、「可変長文字で良いじゃん」というのがGaucheの設計当初からあったのですが、
具体的に「このアルゴリズムはどうしても文字列を整数インデックスでランダムアクセス
しなくちゃならん」という具体例がありましたら教えて下さい。
例えばKnuth-Morris-Plattのサーチは検索文字列の方をインデックスでアクセス
する必要がありますよね (ただ、この場合、検索文字列は一般に被検索文字列に
対して短いのと、どうしても速度が問題になるなら検索文字列の方をベクタに
変換すればいいかなと)。Shiro
- Gaucheを使いはじめました。Perlを捨てれそうです。ライブラリがナイスです。--kiyoka
- 特に正規表現がナイスなんですが、逆に良すぎて Gaucheのスクリプトを他に
持っていけないんじゃないかと... Bigloo?で cygwin less な Windowsバイナリ作りたいのに... --kiyoka
- うーむ、Gauche->Biglooトランスレータとか作りますか。正規表現のシンタックスはライブラリコールにして、マルチバイト部分はバイト列のマッチへと展開…とか。
Dorai ShriramさんあたりがScheme->schemeトランスレータみたいのを作ってたような
気がします Shiro
- マルチバイトまで対応できてしまったとしたら、けっこううれしいかもしれません。残念ながら、Shiroさんのコメントを読んでも技術的な点で理解できていませんが、簡単な方法があれば良いかなと思います。Ruby には
Exerb なんていうものがありますが、こんな風なことができたらいいですね。--kiyoka
- 単にバイナリにするだけならさほど難しくはないと思います。cygwin非依存にするのは骨ですね。あとGaucheがインストールされてなくてもバイナリ単独で動くようにするには各種dllをstatic linkしなくちゃならないとか、そのへん手間がかかりそうですが。Shiro
Last modified : 2013/04/11 17:21:58 UTC