Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11634
Последний выпуск: 19.06.2015

Вопрос по контрольной

68K
03 марта 2011 года
eu6pc
1 / / 03.03.2011
Коллеги, раступите меня, пожалуйтса

Дали контрольную по Haskell. Хаскел вижу первый раз в жизни. Две первые задачи сделал, застрял на списках. Помогите, пожалуйста:
Условие:

3. Решить следующие задачи:
а) инвертировать список на всех уровнях вложенности;
б) найти суммы всех подряд идущих пар чисел в списке;
в) определить длину списка;
г) найти сумму нечетных элементов списка.


Застрял на а).
Полистал литературу, нашел следующий код:
-----------------------------
append :: [a] -> [a] -> [a]
append [] l = l
append (h:t) l2 = h : (append t l2)

atom :: ListStr (a) -> Bool
atom a = True
atom _ = False

Reverse_all (L) = L when atom (L)
Reverse_all ([]) = []
Reverse_all (H:T) = Append (Reverse_all (T), Reverse_all (H)) otherwise
----------------------------

append вопросов не вызывает, функция atom, как я понял, определяет является ли текущий элемент списка единичным элементом или составным (тоже списком). Но этот код не компилируется - Hugs выдает ошибки: ему не нравится слово when и непонятно слово ListStr...

Подскажите, пожалуйста, как тут правильно написать ?

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог