source: project/release/4/srfi-102/trunk/notes.txt @ 16110

Last change on this file since 16110 was 16110, checked in by Kon Lovett, 10 years ago

Fixed arity cache

File size: 1.6 KB
Line 
1
2* Procedure Signature
3
4  ; [..] - optional
5  ; <..> - non-terminal
6  ; ...  - one or more
7  ; ..   - terminal
8 
9  <signature>   ::  ( <procedure> [#!condition <conditions>] )
10                 |  <procedure>
11
12  ; match-lambda ?
13  <procedure>   ::  <lambda> | <case-lambda>
14 
15  ; conditions are a kind-of struct
16  <conditions>  ::  <identifier> ...
17 
18  <lambda>      ::  procedure
19                 |  ( [<formals>] -> [<result>] )
20 
21  <formals>     ::  <old-formals> | <new-formals>
22
23  <old-formals> ::  [<requireds>] [#!optional <optionals>] [#!rest <rest>] [#!key <keys>]
24
25  ; from proposed DSSSL parsing extension
26  <new-formals> ::  [<requireds>] [#!optional <optionals>] [#!key <keys>] [#!rest <rest>]
27 
28  <requireds>   ::  <type> ...
29 
30  <optionals>   ::  <type> ...
31 
32  <keys>        ::  <keyword> <type> <keys>
33 
34  <rest>        ::  <type> | values | noreturn
35 
36  <result>      ::  <type> | ( <type> ... )
37
38  <type>        ::  <basic-type>
39                 |  ( struct <identifier> )
40                 |  <signature>
41                 |  ( or <type> ... )  ; union
42                 |  <other-type>
43
44  <basic-type>  ::  * | string | symbol | char | number | boolean | list | pair |
45                    vector | null | eof | undefined | port |
46                    blob | pointer | locative | fixnum | float
47 
48  <case-lambda> ::  ( <lambda> ... )
49
50* MetaData (extra)
51
52  <metadata>    ::  <keyword> <metadatum> <metadata>
53
54  <metadatum>   ::  <datum> | <data>
55
56  <datum>       ::  <symbol> | <string> | <number>
57
58  <data>        ::  ( <datums> )
59
60  <datums>      ::  <datum> <datums>
Note: See TracBrowser for help on using the repository browser.