Ошибка анализа Haskell на входе `<- '

Не могу правильно выстроить (отступ) этот код в Haskell. Получение ошибки:

parse error on input `<-'

Может кто-нибудь определить, где ошибка в:

evalListSplitAt n stratPref stratSuff [] = return []
evalListSplitAt n stratPref stratSuff xs = do ys` <- stratPref ys
                                              zs` <- stratSuff zs
                                            return (ys` ++ zs`)
                                            where (ys,zs) = splitAt n xs

Приветствия.

1 ответ

Решение

Вы должны сделать отступ для каждой строки в do блокировать одинаково Кроме того, обязательно используйте ' для имен переменных, а не `, (То есть используйте апостроф, а не обратный кавычки. Обратные кавычки используются для создания инфиксных функций, поэтому их нельзя использовать как часть имени переменной. Поэтому вы можете назвать что-то "x prime", используя апостроф: x'Итак, ваш код должен выглядеть примерно так:

evalListSplitAt n stratPref stratSuff [] = return []
evalListSplitAt n stratPref stratSuff xs = do ys' <- stratPref ys
                                              zs' <- stratSuff zs
                                              return (ys' ++ zs')
                                        where (ys,zs) = splitAt n xs
Другие вопросы по тегам