Я написал следующее решение для задачи 10 (99 questions) in Haskell:Пусть синтаксис Haskell
{-- using dropWhile and takeWhile --}
enc :: (Eq a) => [a] -> [(Int, a)]
enc [] = []
enc (x:xs) = (length $ takeWhile (==x) (x:xs), x) : enc (dropWhile (==x) xs)
Я хотел переписать то же самое решение, но на этот раз с помощью синтаксиса LET.
{-- using dropWhile and takeWhile/more readable --}
enc' :: (Eq a) => [a] -> [(Int, a)]
enc' [] = []
enc' (x:xs) = let num = length $ takeWhile (==x) (x:xs)
rem = dropWhile (==x) (x:xs)
in (num, x) : enc' rem
Второй пример не работает. Ошибка:
*Main> :l Problem10.hs
Compiling Main (Problem10.hs, interpreted)
Problem10.hs:16:38: parse error on input `='
Failed, modules loaded: none.
Где линия 16 это одна: rem = dropWhile (==x) (x:xs)
Любые предложения?
LE: Да, это была проблема с отступом. Кажется, что мой редактор (Notepad ++) должен быть настроен немного, чтобы избежать подобных проблем.
Может быть, это ошибка отступы? Возможно, вам придется нажать остальные строки после того, как оператор let будет соответствовать. Не уверен, что это преступник. – templatetypedef