2012-04-20 3 views
0

Я хотел бы вставить int в правильное положение в отсортированном списке. например, если я вставлю 2, он будет вставлен во вторую позицию.Вставить int в список

insert :: Int -> [Int] -> [Int 
insert x [] = [x] 
insert x (y:ys) = if xsy 
       then x:y:ys else y insert x ys 

может кто-нибудь указать, что не так. благодаря

+1

В принципе, все готово. Осталось исправить несколько опечаток. –

+0

@ DanielFischer cheers – ErHunt

+1

«может кто-нибудь указать, что не так» - я считаю, что компилятор мог рассказать вам кое-что о том, что не так. Изучение ошибок компилятора - отличное преимущество для программирования на любом языке. –

ответ

3

Как Даниэль Фишер говорит, вы просто есть несколько опечаток:

  • xsy предположительно должно быть x < y.

  • У вас пропавшего оператора в y insert x ys; какой оператор вам нужен, чтобы добавить значение в список? (Подсказка: вы используете его, если шаблон соответствует списку.)

  • Вы пропустили ] после [Int.

  • Отпечаток неправильный; then должен быть выровнен по крайней мере до if, а else должен быть на новой линии, выровненной с then. Если вы вставляете вкладки, вы должны указать вместо этого в своем отступе вместо пробелов (или, если нужно, указать для отображения вкладок в виде 8 пробелов, что и ожидает Haskell).

Кроме этого, вы должны идти.

Смежные вопросы