#haskell
#haskell
Вопрос:
когда я выполняю следующие строки кода, я получаю следующую ошибку
TyInfer.hs:115:0: parse error (possibly incorrect indentation)
кто-нибудь может объяснить мне, в чем проблема.
type Subst = [(TyVar, Type)]
-- ---------------------------------------------------------------------
-- Unification
--
unify :: Type -> Type -> Subst
unify t1 t2 = error "substBnd: implement me"
-- ---------------------------------------------------------------------
-- Replace variables in the type with the types in the Subst
--
line: no 115: substitute :: Subst -> Type -> Type
substitute [( _ , t2)] tv = tv <- t2
-- ---------------------------------------------------------------------
-- Replace variables in the type annotations of a Bind, Expr, or Alt
--
substBnd :: Subst -> Bind -> Bind
substBnd _ _ = error "substBnd: implement me"
Спасибо.
Комментарии:
1. Действительно ли все это имеет отступ в 2 или 3 пробела?
2. Ваши определения верхнего уровня не должны иметь отступов. Кроме того,
tv <- t2
это недопустимый синтаксис.3. Какова предполагаемая функция substitute ? Ваш комментарий вроде как неясен.
4. @JeffreyBurka Я предполагаю замену типа из его комментариев и общей проблемы. например, замените все свободные появления TyVar в tv на Type в tv, избегая при этом новых захватов.
Ответ №1:
Определяющие строки substitute
имеют больший отступ, чем строки, определяющие другие значения. Снимите их.
Ответ №2:
Отступ substitute , а также его определение неверны . tv<-t2 не имеет никакого смысла. пожалуйста, будьте более ясны, что вы собираетесь делать с функцией замены.