Списки, определенные как «Может быть» в Haskell? Почему нет?

Вы не обижаетесь, см. Maybe List, за исключением обработки ошибок -, например, потому что списки немного Maybeсами по себе :у них есть свои "Nothing":[]и свои "Just":(:). Я написал тип списка, используя Maybe и функции для преобразования стандартных и «экспериментальных» списков. toStd. toExp == id.

data List a = List a (Maybe (List a))
    deriving (Eq, Show, Read)

toExp [] = Nothing
toExp (x:xs) = Just (List x (toExp xs))

toStd Nothing = []
toStd (Just (List x xs)) = x : (toStd xs)

Что вы думаете об этом, как о попытке сократить повторение, обобщить?

Деревья тоже могут быть определены с помощью этих списков :

type Tree a = List (Tree a, Tree a)

. Однако я не тестировал этот последний фрагмент кода.

5
задан L01man 10 July 2012 в 09:40
поделиться