2011-05-15 120 views
4

爲什麼我不能做新手問題/ HappStack

z = x? 

,但我能做到這一點?

y s = x s 

我是一個新手哈斯克爾這 是我一直在GHCI一直在努力:

Prelude> import Happstack.Server 
Prelude Happstack.Server> let x s = ok $ toResponse $ "Some string" 
Prelude Happstack.Server> :t x 
x :: FilterMonad Response m => t -> m Response 

Prelude Happstack.Server> let y s = x s 
Prelude Happstack.Server> :t y 
y :: FilterMonad Response m => t -> m Response 

Prelude Happstack.Server> let z = x 
<interactive>:1:9: 
    No instance for (FilterMonad Response m0) 
     arising from a use of `x' 

回答

5

貌似monomorphism restriction的另一種情況。

您可以明確包含參數,即y s = x s包含明確的類型簽名,或者運行GHCi與-XNoMonomorphismRestriction

+0

謝謝。它的工作原理=) 雖然我認爲在我明白這意味着什麼之前幾個月,以及我通過使用該標誌給出的內容。 – 2011-05-15 15:43:36