Tôi vừa cài đặt phiên bản F # mới nhất và mở một giải pháp cũ để xem nó sẽ cho tôi biết điều gì.Cảnh báo không gian tên F # 2.0
Đó là một giải pháp đa tập tin, nơi các tập tin đầu tiên bao gồm một số 'hàm mở rộng' vào danh sách module:
module List =
///Given list of 'rows', returns list of 'columns'
let rec transpose lst =
match lst with
| (_::_)::_ -> List.map List.hd lst :: transpose (List.map List.tl lst)
| _ -> []
Trình biên dịch không còn thích này, và nói:
tập tin trong thư viện hoặc ứng dụng nhiều tệp phải bắt đầu bằng không gian tên hoặc khai báo mô-đun, ví dụ 'Namespace SomeNamespace.SubNamespace' hoặc 'mô-đun SomeNamespace.SomeModule'
Nhưng nếu tôi làm điều này:
module Foo.List =
Nó nói:
Một module viết tắt phải là một tên đơn giản, không phải là đường dẫn
Tôi thiếu gì ở đây? Và giải pháp cho trường hợp 'đặc biệt' này là nơi tôi mở rộng một mô-đun đến từ nơi khác?
hd -> đầu và tl -> đuôi? Những người này không quan tâm đến chơi gôn mã? :) – Benjol
:) - Thêm chúng trở lại vì bạn đã thêm chức năng vào mô-đun Danh sách ... –
Một nửa câu trả lời khác, điều này rất khó hiểu, là nếu bạn không có không gian tên, và chỉ là một mô-đun, bạn phải 't đặt một = sau khi khai báo mô-đun. Nhưng nếu bạn có một không gian tên, bạn cần một = – Benjol