2012-05-06 5 views
0
initials :: String -> String -> String 
initials firstname lastname = [f] ++ ". " ++ [l] ++ "." 
    where (f:_) = firstname 
      (l:_) = lastname 

Для этого кода. Я получил ошибкуОшибка анализа на входе `= '

parse error on input `=' 

Почему?

+0

Я не сделал ... http://codepad.org/LVecpglP только ошибка, я думаю, последняя строка не была должным образом отступом. После того как вы его исправили ... ошибка синтаксического анализа должна пойти –

ответ

4

Вы используете символ табуляции перед ключевым словом where. Для GHC это выглядит следующим образом:

␉  where␠(f:_)␠=␠firstname 
␠␠␠␠␠␠␠␠␠(l:_)␠=␠lastname 

Так, GHC считает, что первая строка в where блоке начинается в столбце 14 (вкладка подсчетов для 8 столбцов IIRC) в то время как вторая линия начинается в колонке 9, которая приводит к тому, ошибка.

Вы должны использовать текстовый редактор , который преобразует вкладки в 4 пространства для вас.

+0

спасибо. решена. Да ты прав. божественная проклятая вкладка –

4

Кстати, вам не нужны вспомогательные функции, вы можете непосредственно шаблон матч на аргументах

initials :: String -> String -> String 
initials (f:_) (l:_) = [f,'.',' ',l,'.'] 
Смежные вопросы