Re[2]: [Haskell] Existential Types - код не компилируется
От: awk  
Дата: 11.02.10 12:48
Оценка:
Здравствуйте, haskell_beginner, Вы писали:

А>Ну не может он вывести какой тип будет у newX! Исправить можно двумя способами:

А>1) добавить {-# LANGUAGE NoMonomorphismRestriction #-}

Спасибо, сработало.
Я правильно понимаю, что сейчас ему недостаточно, что у newX будет "какой-то тип, принадлежащий к классу EX"?

А>2) переписать по-нормальному


А как? Я пытаюсь получить поведение, аналогичное интерфейсам. Конкретная задача — сделать работу с символьными выражениями
начал примерно с этого:

{- Symbolic expression -}
class (EX a) where
  {- Enumerate/edit subexpressions -}
  visit :: forall b c d. (EX b, EX c, EX d) => a -> (b -> Maybe c) -> d

{- Binary op type -}
data T2 = T2_ADD | T2_SUB

{- Binary op -}
data EX2 = forall a b. (EX a, EX b) => EX2 a b T2
instance EX EX2 where
  visit (EX2 left right t) visitor = let newLeft = visitor left {- тут вылезает такая же ошибка -}
                                     ...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.