2011-11-06 33 views
5

在一個文件,我需要使用常規的前奏(++)運算符,我也想實現自己的行爲(++)。我在我的文件的頂部使用import Prelude hiding (++),定義我自己的(++)運算符,現在下面將進一步謹提及到正規的前奏(++)。我如何實現這一目標?Haskell前奏藏匿,UNDO?

回答

14

import qualified Prelude 
除了

import Prelude hiding ((++)) 

在代碼的開頭,並在您的前奏需要++Prelude.++

4

由於伊藤剛解釋,你可以通過它的模塊名限定操作。然而,由於定義自己的(++)版本,你最有可能想增加你的程序的可讀性,這有資格的運營商,它的模塊名稱稍後似乎是一個奇怪的措施。

看看這個:"abc" Prelude.++ "def" 現在這就是醜。

爲什麼不能簡單地創建一個新的運營商,像<++>或類似`append`中綴函數?

+3

呀,其實我對這個問題的第一反應是「不要對你的功能'(++)',」雖然我沒有張貼。但是,如果提交者正在用自己的'++'編寫一個庫,用它來代替Prelude中的'++',那麼庫的用戶理想情況下不需要使用'Prelude。++'。在這種(罕見的)情況下,定義一個具有相同名稱的函數是有意義的。否則,引起名稱與如此盛行的事物相沖突是沒有意義的。 –

+1

當人們通過「不這樣做」的問題來回答問題和回答時,尤其是當問題沒有提供關於其動機的足夠信息時,它開始激怒我。讓探險者探索,讓他們嘗試他們認爲正確的事情,讓他們親眼看到他們做得多麼醜陋。不久,他們將能夠在*他們的答案上寫下這個評論。 :-) – luqui