2013-05-14 4 views
0

Вот мой код:функций высшего порядка, разбора ошибок в схеме: хз

-- combine lists with binary operation 

clwbo :: (Num a, Num b, Num c) => (a -> b -> c) -> [a] -> [b] -> [c] 
clwbo fps lista listb 
    |length lista /= length listb = [] 
    |length lista ==length listb = case lista listb of 
             [] [] -> [] 
             x:xs y:ys -> [fps x y] ++ clwbo fps xs ys 
             otherwise -> error "get off" 

А вот сообщение об ошибке из терминала:

test.hs:8:42: Parse error in pattern: xs 
Failed, modules loaded: none. 

Любой любит, чтобы сказать мне, что случилось с моим код?

ответ

1

Вы не можете поместить несколько паттернов рядом друг с другом в выражении case. Чтобы сопоставить несколько шаблонов одновременно, поместите их в кортеж:

case (lista, listb) of 
    ([], [])  -> ... 
    (x:xs, y:ys) -> ... 
    otherwise -> ... 
+0

yeap, мужчина, u правы, большое спасибо – libra