ошибка синтаксического анализа (возможно, неправильный отступ)

#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 не имеет никакого смысла. пожалуйста, будьте более ясны, что вы собираетесь делать с функцией замены.