SRFI対応の現状や今後の予定、戦略など。
| No | Final | Support | Title |
| SRFI:0 | 1999/05/07 | ○ | Feature-based conditional expansion construct |
| SRFI:1 | 1999/10/09 | ○ | List Library |
| SRFI:2 | 1999/03/01 | ○ | AND-LET*: an AND with local bindings, a guarded LET* special form |
| SRFI:4 | 1999/05/22 | ○ | Homogeneous numeric vector datatypes |
| SRFI:5 | 1999/04/26 | ○ | A compatible let form with signatures and rest arguments |
| SRFI:6 | 1999/07/01 | ○ | Basic String Ports |
| SRFI:7 | 1999/08/19 | ○ | Feature-based program configuration language |
| SRFI:8 | 1999/08/30 | ○ | receive: Binding to multiple values |
| SRFI:9 | 1999/09/09 | ○ | Defining Record Types |
| SRFI:10 | 2000/01/13 | ○ | Sharp-Comma External Form |
| SRFI:11 | 2000/03/15 | ○ | Syntax for receiving multiple values |
| SRFI:13 | 2000/12/28 | ○ | String Library |
| SRFI:14 | 2000/12/28 | ○ | Character-Set Library |
| SRFI:16 | 2000/03/10 | ○ | Syntax for procedures of variable arity |
| SRFI:17 | 2000/07/24 | ○ | Generalized set! |
| SRFI:18 | 2001/03/14 | ○ | Multithreading support |
| SRFI:19 | 2000/08/31 | ○ | Time Data Types and Procedures |
| SRFI:21 | 2001/03/02 | × | Real-time multithreading support |
| SRFI:22 | 2002/01/20 | ○ | Running Scheme Scripts on Unix |
| SRFI:23 | 2001/06/22 | ○ | Error reporting mechanism |
| SRFI:25 | 2002/05/21 | ○ | Multi-dimensional Array Primitives |
| SRFI:26 | 2002/02/14 | ○ | Notation for Specializing Parameters without Currying |
| SRFI:27 | 2002/06/03 | ○ | Sources of Random Bits |
| SRFI:28 | 2002/06/25 | ○ | Basic Format Strings |
| SRFI:29 | 2002/08/01 | ○ | Localization |
| SRFI:30 | 2002/08/07 | ○ | Nested Multi-line Comments |
| SRFI:31 | 2002/12/02 | ○ | A special form for recursive evaluation |
| SRFI:34 | 2002/12/01 | ○ | Exception Handling for Programs |
| SRFI:35 | 2002/12/01 | ○ | Conditions |
| SRFI:36 | 2002/12/01 | △ | I/O Conditions |
| SRFI:37 | 2003/01/13 | ○ | args-fold: a program argument processor |
| SRFI:38 | 2003/04/02 | ○ | External Representation for Data With Shared Structure |
| SRFI:39 | 2003/06/30 | ○ | Parameter objects |
| SRFI:40 | 2004/08/22 | ○ | A Library of Streams |
| SRFI:42 | 2003/07/07 | ○ | Eager Comprehensions |
| SRFI:43 | 2004/10/26 | ○ | Vector Library |
| SRFI:44 | 2004/03/07 | × | Collections |
| SRFI:45 | 2004/04/05 | ○ | Primitives for expressing iterative lazy algorithms |
| SRFI:46 | 2005/02/28 | × | Basic Syntax-rules Extensions |
| SRFI:47 | 2004/06/14 | × | Array |
| SRFI:49 | 2005/07/22 | × | Indentation-sensitive syntax |
| SRFI:48 | 2004/03/02 | × | Intermediate Format Strings |
| SRFI:51 | 2004/06/07 | × | Handling rest list |
| SRFI:54 | 2004/06/24 | × | Formatting |
| SRFI:55 | 2004/11/05 | ○ | require-extension |
| SRFI:57 | 2005/03/07 | × | Records |
| SRFI:58 | 2005/03/08 | × | Array Notation |
| SRFI:59 | 2005/03/08 | × | Vicinity |
| SRFI:60 | 2005/03/08 | × | Integers as Bits |
| SRFI:61 | 2005/07/21 | × | A more general cond clause |
| SRFI:62 | 2005/07/21 | (○) | S-expression comments |
| SRFI:63 | 2005/04/27 | × | Homogeneous and Heterogeneous Arrays |
| SRFI:67 | 2005/09/11 | × | Compare Procedures |
| SRFI:69 | 2005/09/14 | × | Basic hash tables |
| SRFI:70 | 2005/09/11 | × | Numbers |
| SRFI:71 | 2005/08/12 | × | LET-syntax for multiple values |
| SRFI:72 | 2005/09/21 | × | Simple hygienic macros |
※StatusがFinalのSRFIを列挙しています。
一応関数はそろっているようなのですが、どうなのでしょう。 挙動などがSRFI:34とは違ったりしてるのでしょうか?
Shiro: raiseの仕様が、SRFI:18とSRFI:34で微妙に違うんです。 Gaucheは今はSRFI:18の方に合わせてあります。
簡単に言えば、SRFI:18のraiseはその時点での継続を伴ってexception handlerを呼ぶので、exception handler中でなにもせずにraiseすると 無限ループします。SRFI:34のraiseはexception handlerだけ 「外側の」handlerに置き換えてからhandlerを呼ぶので、 exception handler中でraiseすると外側のhandlerに制御が移ります。 詳しくはSRFI:34のdiscussion mailing listを参照して下さい。
どうしようかは思案中。
| パターン | GaucheRefj:gauche.collection | SRFI:44 |
| A | × | × |
| B | × | ○ |
| C | ○ | × |
| D | ○ | ○ |
Aは無いとして、過去を捨ててSRFIを取るB、現状維持のC、やり方は何通りも有るのD。 Gaucheがとる戦略は、はたしてどれなのか?
Shiro: SRFI:44自体はあんまり使い易そうじゃないので、互換用にモジュールで サポートし、Gaucheのcollectionフレームワークはそのままにすると思います。 融合できればそれに越したことはないですが。
hira: LLWeekendのMLで
なんてのがあったので、調査ついでにページを作ってみました。