我正在學習haskell,並且在解決我碰到的許多haskell表達式時,我有很多困難。如何自動將任意haskell表達式括起來?
當然,我認爲,在足夠的練習下,心理解析haskell將成爲第二性質,但與此同時,爲了理解我遇到的情況,我想找到一些自動的方法來將任意「標準haskell」表達式轉換爲其中通過引入必要括號來消除所有「不明確」子表達式的表達式。
例如,將轉化的表達
f g h i
...成
((f g) h) i
...,或
a -> b -> c -> d
...成
a -> (b -> (c -> d))
...等
最好,這將是一個工具,我可以用我的電話訪問,因爲我做很多我的閱讀對哈斯克爾遠離正確的計算機。
當然,沒有這樣的工具可能可能與未知的固定性和關聯的運營商定製合作。通過「標準哈斯克爾」我的意思是在前奏和標準哈斯克爾庫中定義的東西。
我使用的是「曖昧」這裏簡寫「在沒有優先規則不明確」。例如。 2 + 3 * 5
不明確除非有一些優先規則解決了兩個操作中的哪一個首先被執行的問題。
我不能老是想着你的_phone_任何東西,但也有一些非常簡單的事情,你可以在GHCI – Alec
好做,[哈斯克爾-SRC-EXTS(HTTP://hackage.haskell。 org/package/haskell-src-exts-1.18.2/docs/Language-Haskell-Exts.html)可以很容易地獲得完全明確的分析樹並將其打印出來。但它不可讀。嘗試'(fmap。fmap。fmap)(const())(parseFile「foo.hs」)'ghci,一旦你安裝了它。 –
@Alec:我可以在ghci中做什麼? (關於電話:這只是一個偏好,如果在這件事上有一個選擇,如果沒有,我會很樂意接受ghci。) – kjo