F# DirectX 데모에서 불일치 문제를 입력하십시오
문제
나는 시도하고 싶었다 FDX 데모 그러나 호환성 문제로 인한 일련의 오류와 경고를 제공 했으므로 올바르게 작동하도록 노력했습니다. 전체 코드는 a 페이스트 빈.
여기서 코드에 문제가 있습니다.
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
F# Interactive에서 다음 오류를 제공합니다.
Motion-Sample.fs (438,53) : 오류 FS0001 : 불일치를 입력하십시오. 기대 a
((( 'a *'b) list-> 'c) * (('a * 'b) 목록 ->'d)) 참조
그러나 주어진
(float [,] * float [,]) ref.
유형 '('a * 'b) 목록 ->'c '는'float [,] '유형과 일치하지 않습니다.
도움을 주셔서 감사합니다!
해결책
나는 좋은 모습을 취할 시간이 없었지만 메시 게트 정의를 변경해보십시오.
let meshGet (mesh:_[,]*_[,]) (i,j) = let X,Y = mesh in X.[i,j], Y.[i,j]
편집하다
사실, 더 나은 것은 더 신선한 사본이있는 것 같습니다.
http://code.msdn.microsoft.com/fsharpsamples/release/projectreleases.aspx?releaseid=2705
당신은 Hubfs에 게시 된 나이가 아니라 그것을 사용해야합니다.
제휴하지 않습니다 StackOverflow