功能跟踪中的非穷举模式'

时间:2015-01-01 20:13:17

标签: haskell non-exhaustive-patterns

trace :: String -> Float -> Colour -> [ColouredLine]  
trace (c:cs) angle colour  
 = trace' (c:cs) angle colour (0.0,0.0)  
  where  
   trace' "" angle colour intvertex = []  
   trace' (c:cs) angle colour intvertex  
       | c == 'R' = trace' cs (angle-90) colour intvertex  
       | c == 'L' = trace' cs (angle+90) colour intvertex  
       | c == 'F' = [(intvertex,aftvertex,colour)] ++ trace' cs angle colour aftvertex  
         where  
           aftvertex = fst (move 'F' (intvertex,angle) angle) 

REPORT:

  

trace“F [RF] [LF] [FF]”45.0(1.0,0.0,0.0)=异常:LSystems.hs:(95,4) - (101,61):函数跟踪中的非穷举模式“

预期的测试用例:

  

[(( - 8.742278e-8,2.0),( - 1.3113416e-7,3.0),(1.0,0.0,0.0)),(( - 4.371139e-8,1.0),( - 0.7071068,1.7071068 ),(1.0,0.0,0.0)),(( - 4.371139e-8,1.0),( - 8.742278e-8,2.0),(1.0,0.0,0.0)),(( - 4.371139e-8,1.0 ),(0.7071067,1.7071068),(1.0,0.0,0.0)),((0.0,0.0),( - 4.371139e-8,1.0),(1.0,0.0,0.0))]

1 个答案:

答案 0 :(得分:4)

您的测试字符串包含'['和']',但您只匹配模式匹配中的'R','L'和'F'。所以一旦达到方括号,你就会得到一个例外。