Ошибка анализа 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