2012-11-01 16 views

Trả lời

21

Bạn cần phải thêm một khoảng trống giữa lambda và dấu ngã

\ ~(x,s) -> run (f x) s 

các nguồn gốc của sự nhầm lẫn là vì \~ đều ký tự hợp lệ cho người dùng định nghĩa các nhà khai thác để \~ được phân tách như một thay vì được phân tích cú pháp như sự khởi đầu của một biểu thức lambda:

-- Defining a custom \~ operator is allowed: 
let a \~ b = {- ... -} 
+0

Sau khi lãng phí nhiều thời gian hơn nữa, tôi muốn làm điều này, tôi đã tìm thấy giải pháp trong khi viết xuống phiên bản gốc của câu hỏi này. Tôi đoán vẫn còn đăng nó có thể giúp một ai đó mặc dù ... – hugomg

+12

Bạn nên thêm lời giải thích, mặc dù. Cả hai '' \ '' và '~' là các ký hiệu và có thể xuất hiện trong các toán tử, do đó '\ ~' bị lexed như một mã thông báo. –

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