F # tipo di problema riscontrato non corrispondente in DirectX demo
Domanda
Ho avuto voglia di provare il FDX demo comunque mi ha dato una serie di errori e avvisi a causa di problemi di compatibilità, così ho cercato di farlo funzionare correttamente. Il codice completo è su una pastebin .
Ho problemi con il codice qui:
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
che mi dà il seguente errore in F # interattivo.
motion-sample.fs (438,53): errore FS0001: Tipo non corrispondente. In attesa di un
((( 'A *' b) Lista -> 'c) * ((' a * 'b) Lista ->' d))
ref
ma dato un
(Float [,] * float [,]) rif.
Il tipo '(' a * 'b) Lista -> 'c' non corrisponde al tipo di 'float [,]'
Grazie per qualsiasi aiuto!
Soluzione
Non ho avuto il tempo di dare una buona occhiata, ma provare a cambiare la definizione meshGet a
let meshGet (mesh:_[,]*_[,]) (i,j) = let X,Y = mesh in X.[i,j], Y.[i,j]
Modifica
In realtà, ancora meglio, sembra che ci sia una copia più fresco a
http://code.msdn.microsoft.com /fsharpsamples/Release/ProjectReleases.aspx?ReleaseId=2705
si dovrebbe usare che, piuttosto che gli anni di età uno pubblicato sul hubfs.