F # tipo de problema en la falta de coincidencia de demostración DirectX
Pregunta
He estado esperando para probar el FDX demostración sin embargo, me dio una serie de errores y advertencias debido a problemas de compatibilidad, por lo que he estado tratando de conseguir que funcione correctamente. El código completo se encuentra en una Pastebin .
Tengo problemas con el código aquí:
let drawSurf f (device:Device) =
let m,n = meshDims !mesh in
let data = Array.init (n*m) (fun k ->
let i,j = k2ij !mesh k in
let x,y = meshGet !mesh (i,j) in
let z = f (x,y) in // single precision f
(x,y,z))
in
let strips = triangleRows n m |> map (map (blendPlace !mesh data)) in
List.iter (fun strip -> drawTriangeStrip strip device) strips;
let m,n = meshDims !mesh in
let lines = gridLines n m in
let lines = lines |> map (colorPlace !mesh data Color.Black) in
drawLineList lines device
lo que me da el siguiente error en Fa # interactiva.
Motion-sample.fs (438,53): FS0001 de error: No coinciden los tipos. Esperando un
((( 'A *' b) Lista -> 'c) * ((' a * 'b) Lista ->' d)) ref
pero teniendo en cuenta un
(Float [,] * float [,]) ref.
El tipo '(' a * 'b) Lista -> 'c' no coincide con el tipo 'float [,]'
Gracias por cualquier ayuda!
Solución
No he tenido tiempo para tener un buen aspecto, pero trate de cambiar la definición meshGet a
let meshGet (mesh:_[,]*_[,]) (i,j) = let X,Y = mesh in X.[i,j], Y.[i,j]
Editar
En realidad, aún mejor, parece que hay una copia fresca a
http://code.msdn.microsoft.com /fsharpsamples/Release/ProjectReleases.aspx?ReleaseId=2705
debería usarla en lugar de uno de los años de edad, publicado en hubfs.