我想寫一個代碼,給定一個括號列表,我會檢查命令是否有效。檢查匹配的括號
爲了簡單起見,定義了以下數據類型。
datatype par = LPAR | RPAR
type pList = par list
我直到現在是:
fun valid(nil:plist): bool = true
| valid([Lpar]) = false
| valid([Rpar]) = false
| valid([Lrap,Rpar) = true
| valid(L::L1) =
例如, 「(()()」 - > [LPAR,LPAR,RPAR,LPAR,RPAR]將返回false 你可以看到括號是字符串格式的,我很困惑,因爲我必須檢查兩件事:左邊(等於左邊)和每個(匹配a)。如果是,那麼我需要做一些幫手功能
你能否給我提供關於我的幫手功能應該是的信息或者這是否實施? ty
第一種模式是OK。第二,第三和第四模式是無用的,雖然沒有正式的錯誤。您似乎試圖將整個括號列表對待。試着表達這個規則:一個右括號在一個左括號之後,所以遞歸地(在一個開 - 關對內,可能有嵌套的開 - 關對)。這是作業嗎? – Hibou57 2014-09-27 23:21:36