Произвольные входные наборы в списках в Haskell - PullRequest
1 голос
/ 28 декабря 2010

Как в Haskell использовать произвольные входные наборы в списках?

Я приведу пример того, что мне нужно:

generate :: [[[Integer]]] -> [[[Integer]]]
generate a = [ result | 
      i1 <- a !! 0,
      i2 <- a !! 1,
      i3 <- a !! 2,
      i4 <- a !! 3,
      ...
      i99 <- a !! 99,
      let result = [i1,i2,i3,i4, ..., i99],
      isCorrect result
   ]

1 Ответ

8 голосов
/ 28 декабря 2010

Предполагая, что a гарантированно имеет длину 100, я думаю, что вы хотите generate a = filter isCorrect $ sequence a. Здесь sequence используется в монаде [] для создания декартового произведения списка списков.

...