2016-03-15 76 views
0

我想打印由我的函數f形成的整數的4x4矩陣。ghci中的Haskell打印整數矩陣

import Numeric 
import Numeric.LinearAlgebra 
import Numeric.LinearAlgebra.Data 
--import Numeric.Matrix 
import Data.Array 

f m n | (n==0) = 0 
f m n | (m==1) = n 
f m n = f (m-1) n + f m (n-1) 

mymat = matrix 4 4 $ f 

在最後一行的類型錯誤時,我想找到的功能適當變體與填充的行和列的函數計算的結果二維矩陣。

====== ======編輯

我已經找到了解決方案,但奇怪的是,這是不容易找到矩陣填充的非標準功能。也許有一個?

import Numeric 
import Numeric.LinearAlgebra 
import Numeric.LinearAlgebra.Data 
import Data.Array 

f m n | (n==0) = 1 
f m n | (m==0) = 1 
f m n = f (m-1) n + f m (n-1) 

qw x y 0 = [f 0 0] 
qw x y n = (qw x y (n-1)) ++ [f (mod n x) (div n y) ] 

mymat x y = matrix x (qw x y (x*y-1)) 
+1

總是添加確切的錯誤信息。 – Zeta

+0

您的函數'f'不會以矩陣函數接受的方式創建矩陣。它需要許多行和一個包含內容的平面列表。 'f'只是'Int - > Int - > Int'的一個函數。你可以把它變成一個嵌套列表,用於例如'matrix'。 '[f x y | x < - [0..3],y < - [0..3]]'。 – user2407038

+0

始終添加確切的錯誤消息,始終使用類型簽名,並始終確保您發佈的代碼實際上重現了問題。 – leftaroundabout

回答

1

感謝所有評論者。 問題現在不是實際的,因爲我一直在尋找這段代碼:

matrix 4 [ f x y | x <- [0..3], y <- [0..3] ]