Haskell: функция, получающая нулевой список

вот некоторые определения типов в моей программе FYI:

type BitString -> String

type Plateau -> [BitString]

У меня есть функция, которая называется:

--Extract will take a list of lists, and return the inner list of the most items. Empty list should return ["00000"]


extract::[Plateau]->Plateau
extract _ = ["00000"]
extract (x:xs)
  |x==maximumBy(compare `on` length)xs=x  --thanks SOF
  |otherwise = extract (xs)

Проблема в том, что независимо от того, что я делаю, извлечение возвращает [" 00000 "]

вот некоторые выходные данные от GHCI, которые работают:

>plateau graycodes
[["01000"],["01010","11010","10010"],["00101"],["01101","01001"]]

это ожидается и имеет форму [Плато] , так как это список списков строк.

>maximumBy(compare `on` length)(plateau graycodes)
["01010","11010","10010"]

>extract (plateau graycodes)
["00000"]

в этом случае я точно знаю, что экстракт будет вызываться с непустым [Плато] . Но часть функции _ возвращается.

Я также пробовал:

extract (x:xs)
  |x==[]=["00000"]
  |x==[""]=["00000"]
  |x==maximumBy(compare `on` length)xs=x  --thanks SOF
  |otherwise = extract (xs)


error: List.maximumBy: Empty list
0
задан Benjamin 27 December 2013 в 11:26
поделиться