3_.hs:104:30:
Couldn't match expected type `ValueTree key a -> Bool'
against inferred type `Bool'
In the second argument of `(==)', namely `True'
In the expression: contains (el tr) == True
In a stmt of a pattern guard for
the definition of `remove':
contains (el tr) == True
Ошибка
Вот в таком вот куске кода на Haskell возникла ошибка. Туплю почему-то по страшному..... Функция принимает дерево, в узлах которого ключ и связанный с ключом список, и ключ, по которому находится значение в дереве. Ошибка вот такая:
Код:
А код вот:
Код:
remove :: ( Ord key ) => key -> ValueTree key a -> ValueTree key a
remove el Emppty = Emppty
remove el tr
| contains ( el tr ) == True = remove el tr
...........
where
contains :: ( Ord key ) => key -> ValueTree key a -> Bool
contains el Emppty = False
contains el ( Nodde x list left right )
| el == x = True
| el < x = ( contains el left )
| el > x = ( contains el right )
remove el Emppty = Emppty
remove el tr
| contains ( el tr ) == True = remove el tr
...........
where
contains :: ( Ord key ) => key -> ValueTree key a -> Bool
contains el Emppty = False
contains el ( Nodde x list left right )
| el == x = True
| el < x = ( contains el left )
| el > x = ( contains el right )
строка, где закралась ошибка:
Код:
| contains ( el tr ) == True = remove el tr
Emmpty - пустое дерево, а само дерево реализовано так:
Код:
data ValueTree key a = Emppty
| Nodde key [a] ( ValueTree key a )( ValueTree key a )
deriving ( Show )
| Nodde key [a] ( ValueTree key a )( ValueTree key a )
deriving ( Show )
Спасибо