fsharp / fsharp/fsharp.org

Possibly wrong pattern for `union-type-case-data` in spec

Abierto
#729 0 comentarios 0 reacciones 0 asignados Ver en GitHub
language-spec
Lenguaje dominante
TeX
Estrellas
311
Forks
291
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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
```

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.