2009-01-20 37 views
30

Tôi đang trong quá trình học F # và đang thưởng thức nó cho đến nay. Hầu như tất cả các ví dụ trực tuyến đều sử dụng cú pháp nhẹ (#light); Tuy nhiên, cũng đưa ra một bình luận về nó đang được cho ví dụ nói trong hầu hết các trường hợp.F # - Tôi có nên học với hoặc không có ánh sáng không?

Tốt hơn bạn nên học F # sử dụng #light enabled hoặc disabled? Tôi đang lên kế hoạch để cuối cùng tìm hiểu nó w/o nó bật nhưng tôi tò mò về nếu nó sẽ là tốt hơn để tìm hiểu nó ở đầu hoặc làm việc trên áp dụng nó sau khi tôi biết ngôn ngữ cốt lõi hơn.

Trả lời

34

Tôi chắc chắn muốn học F # bằng cú pháp #light. Phiên bản không ánh sáng đôi khi hữu ích cho việc hiểu một số thủ thuật về cú pháp F #, nhưng cú pháp #light cung cấp cho bạn nhiều trải nghiệm thú vị.

Ví dụ - sử dụng #light

let add a b c = 
    let ab = a + b 
    printfn "%d" ab 
    c - ab 

Sử dụng phi ánh sáng bạn có thể viết những điều tương tự như thế này:

let add a b c = 
    let ab = a + b in // 'in' keyword specifies where the binding (value 'ab') is valid 
    printfn "%d" ab; // ';' is operator for sequencing expressions 
    c - ab;;   // ';;' is end of a function declaration 

này ví dụ cho thấy rằng bạn không thể viết một cái gì đó như:

let doNothing a b = 
    let sum = a + b in 

Có từ khóa 'trong' ở cuối nhưng hàm không có bất kỳ phần tử nào (becau se không có biểu thức nào sau 'in'). Trong trường hợp này, cú pháp không phải ánh sáng đôi khi rất thú vị để hiểu những gì đang xảy ra ... Nhưng như bạn có thể thấy, mã #light đơn giản hơn rất nhiều.

+1

thụt lề, hoặc dấu ngoặc đơn, hoặc ... có rất nhiều cách để giao tiếp phạm vi khác với 'trong' hoặc ';' hoặc các dấu phân cách khác. Sau khi vượt qua phản ứng ban đầu-giật, hầu hết mọi người thấy rằng khoảng trắng đáng kể là rất lớn. – Brian

+1

@Brian: Trừ khi bạn bị mù, trong trường hợp lập trình bằng ngôn ngữ mà khoảng trống quan trọng là khá tẻ nhạt: http://stackoverflow.com/questions/118643/ –

+0

Cảm ơn ví dụ. Tôi đồng ý rằng khoảng trắng có thể tẻ nhạt, tôi đã không tìm thấy khoảng trắng từ #light để gây khó khăn không giống như một số ngôn ngữ khác. Từ câu trả lời này, tôi đã quyết định tập trung vào #light để tìm hiểu ngôn ngữ và sau đó áp dụng cú pháp chi tiết hơn một khi tôi quen thuộc hơn với F #. – JamesEggers

10

"#light" có thể sẽ trở thành mặc định trong bản phát hành ngôn ngữ trong tương lai, vì vậy tôi sẽ tìm hiểu theo cách đó. Tôi nghĩ hiếm khi có ai sử dụng cú pháp nặng hơn ngoại trừ khả năng tương thích OCaml (hoặc khi biên dịch chéo, hoặc bởi vì con người ngồi ở bàn phím biết OCaml và đang chuyển sang F # mượt mà hơn).

5

Vì tôi đã học F # từ một cuốn sách OCaml (và tôi sử dụng một chế độ OCaml cho Emacs để chỉnh sửa mã F #), tôi thích sử dụng cú pháp "nặng". Tôi đã làm việc với mã #light, và tất nhiên hầu hết các ví dụ F # ​​được viết bằng cách sử dụng cú pháp ánh sáng để có một số hiểu biết chung rất hữu ích. Điều đó nói rằng, nó khá dễ dàng hơn để chuyển từ nặng sang ánh sáng so với cách khác xung quanh, vì vậy nó chắc chắn không phải là một ý tưởng tồi để tìm hiểu nó bằng cách sử dụng cú pháp nặng.

Tôi đã gặp lỗi gây phiền nhiễu thường xuyên với cú pháp nặng được coi là công dân hạng hai (kết hợp bị hỏng cho biểu thức tính toán một vài lần phát hành lại), nhưng điều này khá hiếm. Nói chung, tôi không nghĩ rằng sự khác biệt là rất quan trọng và tôi cần phải nhìn gần để xác định cú pháp đang được sử dụng khi nhìn vào mã trong sự cô lập. YMMV.

1

Nếu tôi nhớ chính xác, hãy đặt "Expert C#" đề cập rằng #light sẽ là mặc định khi F # gửi và cú pháp không phải ánh sáng chỉ nhằm mục đích tương thích.

Các vấn đề liên quan