fsharp / fsharp/fsharp.org

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

Đang mở
#729 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
language-spec
Ngôn ngữ chính
TeX
Star
311
Fork
291
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

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

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Hướng nghiên cứu

Bắt đầu bằng cách xác định mã nguồn của trang 139 trong phần định nghĩa kiểu, rồi so sánh ngữ pháp union-type-case-data được tài liệu hóa với các ví dụ biên dịch thành công và thất bại trong issue. Cập nhật ngữ pháp để trường hợp kiểu hàm khớp với cú pháp bắt buộc, sau đó xác minh rằng đặc tả được kết xuất phản ánh phần sửa đổi.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
fsharp
Lĩnh vực
documentation
Loại issue
Tài liệu
Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Đặc tả rõ ràng
Mức phù hợp với người mới
55/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.