2016-10-25 7 views
7

यहां मेरा कोड है, * को फिर से परिभाषित करने का प्रयास कर रहा है। यह केवल हासिल किया जा सकता है जब * पहले से hided:आयात करते समय आप ऑपरेटर को कैसे छुपाते हैं?

import Prelude hiding (*) 

(*) :: Int -> Int -> Int 
x * 0 = 0 
x * y = x + x*(y-1) 

लेकिन यह काम नहीं करता:

$ ghci test.hs 

GHCi, version 8.0.1: http://www.haskell.org/ghc/ :? for help

test.hs:1:24: error: parse error on input ‘*’

Failed, modules loaded: none.

Prelude>

मैं के रूप में अन्य समारोह को छिपाने सकता है:

import Prelude hiding (read) 

import Prelude hiding (show) 

जबकि यह *, +,जैसे ऑपरेटर के लिए काम नहीं करता।

मैं उन्हें कैसे छुपा सकता हूं?

उत्तर

16

याद है कि कैसे आप एक समारोह के प्रकार के लिए ghci क्वेरी:

:t read 
:t show 

ऑपरेटर के बारे में:

आप टाइप :t + है?

नहीं, आपको तब एक पार्स त्रुटि प्राप्त होगी।

आप :t (+) करते हैं।

अपने मामले का सवाल है, आप अतिरिक्त ब्रैकेट के साथ इसे छिपाने: ((*))

import Prelude hiding ((*)) 

(*) :: Int -> Int -> Int 
x * 0 = 0 
x * y = x + x*(y-1) 
संबंधित मुद्दे