192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
1

Replicate' n x при n < 0 не работает

20.01.2019, 12:52. Показов 1854. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Читаю Липовача и там есть пример с функцией replicate' n x которая возвращает список из x элементов повторяющихся n раз
Пишу прям как в книге и не получается запустить при n < 0.
Haskell
1
2
3
4
replicate' :: Int -> a -> [a]
replicate' n x
    | n <= 0 = []
    | otherwise = x : replicate' (n - 1) x
Вот что говорит:
Haskell
1
replicate' -1 3
HTML5
1
2
3
4
5
6
7
8
<interactive>:127:1: error:
    • Non type-variable argument
        in the constraint: Num (Int -> a -> [a])
      (Use FlexibleContexts to permit this)
    • When checking the inferred type
        it :: forall a t.
              (Num (Int -> a -> [a]), Num (t -> Int -> a -> [a]), Num t) =>
              Int -> a -> [a]
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.01.2019, 12:52
Ответы с готовыми решениями:

Replicate Or Copy Documents
Господа, у меня следующая ситуация: Имеется приложение, к которому имеют доступ все пользователи и...

Replicate Or Copy Documents
для базы стояла опция копировать или реплицировать документы, что позволяло нам открыть документ,...

Замена функции replicate :: Int -> a -> [a]
Всем привет. Прошу написать замену данной функции из стандартной библиотеки при помощи ...

Files/directory Paths To Replicate Указывать Подкаталоги?
В домино администраторе в конекшенах есть поле Files/Directory paths to replicate Нужно указывать...

8
Антикодер
1804 / 869 / 48
Регистрация: 15.09.2012
Сообщений: 3,081
20.01.2019, 14:58 2
Лучший ответ Сообщение было отмечено no swear как решение

Решение

Нужно (-1) в скобочки брать.
Иначе компилятор не сможет отличить от
replicate' - 1 3
То есть replicate' применяется к функции (-).

В других языках функции принимают аргументы в скобочках, поэтому такой проблемы нет:
replicate(-1, 3)
3
Модератор
5046 / 3275 / 526
Регистрация: 01.06.2013
Сообщений: 6,802
Записей в блоге: 9
20.01.2019, 16:06 3
К слову сказать, не припомню ни одного учебника по Haskell где бы этому моменту - записи отрицательного числового литерала как аргумента функции, уделялось бы своевременное внимание.
Цитата Сообщение от XRuZzz Посмотреть сообщение
поэтому такой проблемы нет
Тоже мне проблема. Зато запятая появляется. И, вообще, ML-овский синтаксис удобнее для частичного применения.
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
36578 / 20308 / 4218
Регистрация: 12.02.2012
Сообщений: 33,605
Записей в блоге: 13
20.01.2019, 16:15 4
Цитата Сообщение от Curry Посмотреть сообщение
К слову сказать, не припомню ни одного учебника по Haskell где бы этому моменту - записи отрицательного числового литерала как аргумента функции, уделялось бы своевременное внимание.
- как раз М.Липовача это подчеркивает
1
Модератор
5046 / 3275 / 526
Регистрация: 01.06.2013
Сообщений: 6,802
Записей в блоге: 9
20.01.2019, 16:19 5
FAQ по языку Haskell

Цитата Сообщение от Catstail Посмотреть сообщение
как раз М.Липовача это подчеркивает
Где именно? Не заметил.
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
36578 / 20308 / 4218
Регистрация: 12.02.2012
Сообщений: 33,605
Записей в блоге: 13
20.01.2019, 17:24 6
Лучший ответ Сообщение было отмечено no swear как решение

Решение

Вот картинка. Правда, пример немного не о том, но совет абсолютно верен:
Миниатюры
Replicate' n x при n < 0 не работает  
3
Модератор
5046 / 3275 / 526
Регистрация: 01.06.2013
Сообщений: 6,802
Записей в блоге: 9
20.01.2019, 18:30 7
Catstail, да, не заметил
http://learnyouahaskell.com/st... ady-set-go
3
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
20.01.2019, 20:09  [ТС] 8
Спасибо
Цитата Сообщение от Catstail Посмотреть сообщение
Вот картинка.
В самом начале это рассказывается но почему то подумал что это применяется тока в арифметике а оказывается и при передаче аргументов в функцию тоже так надо писать (-1)
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36578 / 20308 / 4218
Регистрация: 12.02.2012
Сообщений: 33,605
Записей в блоге: 13
20.01.2019, 20:35 9
no swear, причем, это не прихоть. Выше XRuZzz все четко объяснил.
1
20.01.2019, 20:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.01.2019, 20:35
Помогаю со студенческими работами здесь

Unable To Replicate Names.nsf: Notes Port Driver Unavailable
Добрый день, уважаемые участники! Есть 2 сервера: Server1 и Server2, в лотусовом кластере. На...

Не работает Link speed на сетевой карте при 100 mbps, а при 10 работает
Имеется роутер к нему подключен интернет и он раздает этот интернет на 2 компа и ноут, проблема в...

Приложение работает в Debug, странно работает в Release и не работает при билде
Действия выполняются на эмуляторе Pixel 2. Android 9.0. Если я запускаю приложение с конфигурацией...

Клавиатура не работает при первом запуске, но работает при втором
Здраствуйте при первом запуске windows клавиатура не роботает при выключении и включении клавиатура...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru