2016-03-15 61 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] ]