Possibly wrong pattern for `union-type-case-data` in spec
- Dominant language
- TeX
- Stars
- 311
- Forks
- 291
- PR merge metrics
- No merged PRs in 30d
Description
On a page 139 (8. Type definition) possible union cases listed as follow:
```
union-type-case-data :=
ident --null union case
ident of union-type-field * ... * union-type-field --n-ary union case
ident : uncurried-sig --n-ary union case
uncurried-sig :=
args-spec -> type
args-spec :=
arg-spec * ... * arg-spec
```
But this one doesn't compile:
```
type Test =
| A
| B of int*int
| C : int->int
```
with error:
> Return types of union cases must be identical to the type being defined, up to abbreviations
> This construct is deprecated: it is only for use in the F# library
But this one is correct:
```
type Test =
| A
| B of int*int
| C of (int->int) //parentheses are required
```
So probably `union-type-case-data` should look like:
```
union-type-case-data :=
ident --null union case
ident of union-type-field * ... * union-type-field --n-ary union case
ident of (uncurried-sig) --n-ary union case
```
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by locating the source for page 139 of the type-definition section and compare the documented union-type-case-data grammar with the compiling and failing examples in the issue. Update the grammar so the function type case matches the required syntax, then verify that the rendered specification reflects the correction.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- fsharp
- Domain
- documentation
- Issue type
- Documentation
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 55/100