này nghe có vẻ hơi vô lý, nhưng GHC thất bại trong việc biên dịch chuỗi chứa thịt xông khói của tôi, một croissant, dưa chuột, và một củ khoai tây:Phạm vi của các ký tự unicode GHC chấp nhận
main = putStrLn " "
Tôi nhận ra tôi có thể dễ dàng viết
main = putStrLn "\x1F953 \x1F950 \x1F952 \x1F954"
có cùng tác dụng, nhưng tôi đã luôn giả định GHC sẽ chấp nhận bất kỳ mã unicode nào trong nguồn của nó. Vì vậy: những hạn chế thực tế đối với các ký tự unicode GHC chấp nhận trong các tệp nguồn là gì?
BTW: Tôi nhận ra rằng việc hỗ trợ các loại điều này là địa ngục cho lexer GHC (thực sự tôi chạy băng qua vấn đề trên trong khi viết các trường hợp thử nghiệm cho một lexer tôi đã viết), nhưng tôi vẫn là một chút chút thất vọng .
Thông báo lỗi là gì? – melpomene
Nói chung GHC cần biết các ký tự Unicode của các ký tự trong đầu vào của nó (để quyết định định danh bình thường so với toán tử, v.v.), vì vậy tôi đoán câu trả lời là bất kỳ ký tự nào được định nghĩa trong cơ sở dữ liệu Unicode khi GHC được xây dựng. Có vẻ như GHC chỉ cho phép các ký tự in được trong chuỗi ký tự chuỗi và không biết liệu các ký tự được tạo của bạn có thể in được hay không. –
Nền tảng là gì? Mã hóa của tệp đầu vào là gì? – chi