Ошибка анализа Haskell на входе `<- ' - PullRequest
1 голос
/ 06 марта 2012

Невозможно правильно выстроить (отступ) этот код в 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 Ответ

9 голосов
/ 06 марта 2012

Вам необходимо одинаково отступать каждую строку в блоке 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
...