Tôi đang học haskell, và tôi có rất nhiều khó khăn với tinh thần phân tích nhiều biểu thức haskell tôi đi qua. Tất nhiên, tôi hy vọng rằng, với đủ thực hành, phân tích cú pháp haskell sẽ trở thành bản chất thứ hai, nhưng trong khi chờ đợi, để hiểu được những gì tôi gặp phải, tôi muốn tìm một số cách tự động để dịch một biểu thức tùy ý "chuẩn haskell" thành một trong đó tất cả các biểu thức phụ "mơ hồ" đã được loại bỏ bằng cách giới thiệu các dấu ngoặc đơn cần thiết.Làm cách nào để tự động hóa các biểu thức tùy ý haskell?
Ví dụ, nó sẽ dịch các biểu
f g h i
... vào
((f g) h) i
..., hoặc
a -> b -> c -> d
... vào
a -> (b -> (c -> d))
..., v.v.
Tốt hơn, đây là công cụ tôi có thể truy cập bằng điện thoại, vì tôi đọc nhiều trên haskell từ một máy tính phù hợp.
Tất nhiên, không có công cụ như vậy có thể có thể làm việc với các nhà khai thác tùy chỉnh không rõ tính cố định và associativity. Bởi "tiêu chuẩn haskell" Tôi có nghĩa là những thứ được định nghĩa trong prelude và trong thư viện haskell tiêu chuẩn.
Tôi đang sử dụng "không rõ ràng" ở đây làm viết tắt cho "không rõ ràng khi không có quy tắc ưu tiên". Ví dụ. 2 + 3 * 5
là mơ hồ trừ khi có một số quy tắc ưu tiên giải quyết câu hỏi về thao tác nào trong hai thao tác sẽ được thực hiện trước tiên.
tôi có thể t 'nghĩ về bất cứ điều gì trên _phone_ của bạn, nhưng có một số điều khá đơn giản bạn có thể làm trong GHCi – Alec
Vâng, [Haskell-src-EXTS] (http: //hackage.haskell. org/package/haskell-src-exts-1.18.2/docs/Language-Haskell-Exts.html) giúp dễ dàng có được một cây phân tích hoàn toàn rõ ràng và in ra. Nhưng nó không thực sự dễ đọc. Hãy thử '(fmap. Fmap. Fmap) (const()) (parseFile" foo.hs ")' từ ghci khi bạn đã cài đặt nó. –
@Alec: tôi có thể làm gì chính xác trong ghci? (về điện thoại: đó chỉ là một sở thích, và nhẹ nhàng ở đó, trong trường hợp có sự lựa chọn trong vấn đề; nếu không có, tôi sẽ sẵn sàng giải quyết cho ghci.) – kjo