제가 (http://www.haskell.org/haskellwiki/Euler_problems/11_to_20#Problem_11)에 주어진 Euler.11 용액을 복사하지만 인덱싱 에러 실패 "(.! 배열) : 정의되지 않은 배열 요소". 물론 첫 번째로 더 나은 오류 메시지 (!)를 원합니다. 아마도 실패한 색인을 제공하는 것일 수도 있지만, 오류가있는 색인을 제공하는 것만으로는 오류를 디버그하려고했습니다.디버깅리스트 통합
데이터가 올바르게 입력되고 인쇄 된 데이터에 올바른 경계와 데이터가 표시됩니다.
그래서 몇 가지 추적 메시지를 결과 표현식과 이해력 본문에 추가했습니다. 나는 최종 표현식으로부터 많은 추적 결과를 얻었지만, 신체 계산 결과는 얻지 못했다. 왜?
prods :: Array (Int, Int) Int -> [Int]
-- trace ("xs: " ++ show xs) (product xs)
prods a = [trace ("xs: " ++ show xs) (product xs) | i <- range $ bounds a,
s <- senses,
let trace1 = check "i: " i,
let is = take 4 $ iterate s i,
let trace2 = check "is: " is,
all (inArray a) is,
let xs = map (a!) is]
-- Doit
-- euler = print . maximum . prods . input =<< getContents
euler eData = maximum . prods $ input eData
-- Debugging tracecheck :: String -> a -> a
check msg v | trace (msg ++ (show v)) True = v
많은 점에 대해 감사드립니다. 분명히 보인다 (당장!). 배열을 생성 한 후에 배열을 인쇄했는데 기대했던 경계를 모두 따라 잘 보였다. 나는 그것으로 약간의 미정의 값을 얻었는지/볼 방법에 대해 좀 더 알아볼 것입니다. – guthrie
데이터 설정이 잘못되었습니다. 오류 메시지를 잘못 해석했습니다. – guthrie