निम्नलिखित कार्यक्रम प्रकार जांच करता है कि मैं कमांड लाइन (जैसे ghci file.hs
) पर यह निर्दिष्ट करें:ghci - इंटरैक्टिव मोड में उत्सुक संकलन?
Prelude> import Data.Ratio
Prelude Data.Ratio> let x = [1..]
Prelude Data.Ratio> let y = (1%2) + (head x)
<interactive>:1:23:
Couldn't match expected type `Ratio a0' with actual type `Integer'
यह:
import Data.Ratio
foo = let x = [1..]
y = (1%2) + (head x)
in y
हालांकि, अगर मैं इसे सहभागी प्रवेश मैं एक प्रकार त्रुटि मिलेगी ऐसा लगता है कि को अधिक सामान्य (Num t, Enum t) => [t]
के विपरीत [Integer]
के रूप में उत्सुकता से टाइप किया जा रहा है।
क्या मैं इसके बारे में कुछ भी कर सकता हूं? क्या ऐसी अन्य स्थितियां हैं जहां बैच मोड से इंटरैक्टिव मोड अलग होगा?
let x = [1..] :: [Ratio Int]
के रूप में:
Monomorphism प्रतिबंध ... – augustss
और वास्तव में दोषी – Ptival
लिखते हैं, तो खतरनाक monomorphism प्रतिबंध नहीं है। इसके चार तरीके हैं: स्पष्ट हस्ताक्षर दें या इस प्रतिबंध को बंद करें (जीएचसीआई में, आप 'सेट -XNoMonomorphismRestriction' कर सकते हैं और आप कर चुके हैं; भाषा pragmas और कंपाइलर झंडे भी काम करते हैं)। – Vitus