2011-05-02 73 views
2

當實現DFS算法時,我得使用命令性的功能。下面是代碼haskell中的模式解析錯誤

type ST s a = s -> (a, s) 

returnST :: a -> ST s a 
returnST a s = (a, s) 

thenST :: ST s a -> (a -> ST s b) -> ST s b 
(m 'thenST' k) s = k a t where (a, t) = m s 

但GHCI 6.12.3給我一個「解析錯誤的模式」中的最後一行代碼。我從一篇論文中得到這段代碼。現在文章作者使用的編譯器是否有可能沒有嚴格的語法規則?以及如何解決這個錯誤?

+0

你知道DFS不需要可變狀態,對嗎?你的第一句話意味着否則。 – 2011-05-02 17:01:17

+0

@TomMD我剛讀了一篇文章,想要實現他的想法。 – machinarium 2011-05-03 00:33:54

回答

6

變化

'thenST' 

`thenST` 

的反引號把一個普通的函數名稱爲中綴運算符。它們可能已被編輯器,文字處理器或文檔查看器轉換爲單引號。

+0

對不起,我在這個問題上犯了一個錯誤。在我的代碼中,它是'thenST'。所以這個問題與反引號沒有任何關係 – machinarium 2011-05-03 00:31:48

+0

@machinarium:那我不能再幫你了。當我插入反引號時,GHCi 6.12.1會加載你發佈的代碼。 – 2011-05-03 07:48:34