2
我真的不知道如何使用Haskell中的模塊,我對這種語言非常陌生,至今我只知道最基本的東西,比如創建一個函數,東東。現在,我得到那個說調用一個新類型的構造函數
Not in scope: data constructor 'Mat'
這應該是一個矩陣的定義NEWTYPE構造一個錯誤。這是模塊:
module Matrix (Matrix, fillWith, fromRule, numRows, numColumns, at, mtranspose, mmap) where
newtype Matrix a = Mat ((Int,Int), (Int,Int) -> a)
fillWith :: (Int,Int) -> a -> (Matrix a)
fillWith (n,m) k = Mat ((n,m), (\(_,_) -> k))
fromRule :: (Int,Int) -> ((Int,Int) -> a) -> (Matrix a)
fromRule (n,m) f = Mat ((n,m), f)
numRows :: (Matrix a) -> Int
numRows (Mat ((n,_),_)) = n
numColumns :: (Matrix a) -> Int
numColumns (Mat ((_,m),_)) = m
at :: (Matrix a) -> (Int, Int) -> a
at (Mat ((n,m), f)) (i,j)| (i > 0) && (j > 0) || (i <= n) && (j <= m) = f (i,j)
mtranspose :: (Matrix a) -> (Matrix a)
mtranspose (Mat ((n,m),f)) = (Mat ((m,n),\(j,i) -> f (i,j)))
mmap :: (a -> b) -> (Matrix a) -> (Matrix b)
mmap h (Mat ((n,m),f)) = (Mat ((n,m), h.f))
我打電話我自己的模塊以這種方式:
module MatrixShow where
import Matrix
instance Matrix (Show a) => Show (Matrix a) where
show Mat ((x,y),(a,b)) = show 1
演出1僅僅是一個考驗。我甚至不知道那是什麼
instance Matrix (Show a) => Show (Matrix a)
instance Matrix (Show a) => Show (Matrix a)
意味着什麼,他們只是給了我們這個代碼,然後告訴我們弄清楚它沒有解釋在這些事情中發生了什麼。
如果有人能幫助我,我會很感激。我猜測,在Haskell中打印矩陣的內容是非常基本的,我相信我會讓它比應該更難,但作爲這種語言的新手,我不確定我是什麼有時候在做。
我改變了它,但它仍然告訴我,「不在範圍:數據構造「墊'」 – Argus
@Argus檢查是否重新編譯更改後的模塊。 GHCi也應該在沒有明確重新編譯的情況下選擇更改。 – chi
是的,它做到了,謝謝。 – Argus