Trójkąt memoization pascals

Nie jestem zainteresowany rzeczywistym rozwiązaniem lub innymi metodami rozwiązującymi problem, to pamięć, której potrzebuję pomocy :)

Potrzebuję pomocy w zrobieniu problemu z trójkątem pascals z zapamiętywaniem. Chcę uzyskać środkowy numer u podstawy trójkąta. (Project Euler 15)

Pierwszy przykład nie jest zapamiętywany (chociaż sugeruje to nazwa) „20 20” nie da się rozwiązać

Druga próba to próba zrobienia czegoś podobnego do:http://www.haskell.org/haskellwiki/Memoization

Trzecia jest sugestia hlints na nr 2, jeśli jest to bardziej czytelne dla kogoś.

Dostaję ten błąd, ale nie jestem pewien, czy ma rację, nawet jeśli się skompiluje ... (uruchom z ghci z 2 2 jako params

no instance for (Num [a0])
arising from a use of `zmemopascals'
Possible fix: add an instance declaration for (Num [a0])
In the expression: zmemopascals 2 2
In an equation for `it': it = zmemopascals 2 2

.

Code:
--1 
memopascals r c =  [[pascals a b | b<-[1..c]] | a<-[1..r]] !! (r-1) !! (c-1) 
 where pascals 1 _ = 1 
       pascals _ 1 = 1 
       pascals x y = memopascals (x-1) y + memopascals x (y-1) 

--2 
--xmemopascals :: Int -> Int -> Int 
xmemopascals r c =  map (uncurry pascals) (zip [1..] [1..]) !! (r-1) !! (c-1) 
 where pascals 1 _ = 1 
       pascals _ 1 = 1 
       pascals x y = memopascals (x-1) y + memopascals x (y-1) 


--3 
zmemopascals r c =  zipWith pascals [1 ..] [1 ..] !! (r-1) !! (c-1) 
 where pascals 1 _ = 1 
       pascals _ 1 = 1 
       pascals x y = memopascals (x-1) y + memopascals x (y-1)

questionAnswers(3)

yourAnswerToTheQuestion