LINUX.ORG.RU

Помогите пройти тест по Haskell

 ,


1

2
Отметьте функции, которые не могут привести к расходимости ни на каком корректном наборе аргументов.

foo a = a

bar = const foo

baz x = const True

quux = let x = x in x

corge = 10

grault x 0 = x
grault x y = x

garply = grault 'q'

waldo = foo

Я нашел, только baz и corge. Но это не правильный ответ.

На работу устраиваешься?

anonymous ()

ни на каком корректном наборе аргументов

корректном

может, foo undefined не считается корректным?

MyTrooName ★★★★★ ()

garply же.

garply y == grault 'q' y == 'q'

Psych218 ★★★★★ ()
Ответ на: комментарий от MyTrooName

Да.

«Мы называем выражение расходящимся, если вычисление его значения приводит к бесконечному циклу или аварийному завершению.»

trupanka ()
Ответ на: комментарий от Psych218

Не принимает такой ответ... Вопрос с множественным выбором.

trupanka ()
Ответ на: комментарий от trupanka

Не верно все вместе, если бы показывало какие конкретно не верны, то решилось бы тупо перебором.

trupanka ()
Ответ на: комментарий от trupanka

я имею ввиду, что аргумент undefined не считается корректным, т.е. foo a = a не расходится, если аргумент корректный

ни на каком корректном наборе аргументов

т.е. в ответе все кроме quux

MyTrooName ★★★★★ ()
Ответ на: комментарий от MyTrooName

Что значит «корректный набор аргументов»?

@dimiii_2273673 Это означает подходящие по типу. То есть вызовы, например,
GHCi> sin True
GHCi> (*) 3 4 5
 не считаются корректными, а вызов
GHCi> sin undefined
наоборот считается.

Все кроме quux = не верно.

trupanka ()

Конечно, corge МОЖЕТ привести к расходимости, если только там нет явно указанного типа. Сейчас скажу Денису в ЖЖ.

Miguel ★★★★★ ()
Последнее исправление: Miguel (всего исправлений: 1)
Ответ на: комментарий от Miguel

Он и не говорил, что не может. Это я предположил. Правильного ответа еще не удалось найти.

trupanka ()
Ответ на: комментарий от Miguel

Бгг, отличный язык, даже авторы курса его не знают.

anonymous ()
Ответ на: комментарий от Miguel

А вообще какой англоязычный термин для «расходимости»? «undefined»?

trupanka ()

Ну ты припух, это же с курса «Функциональное программирование на языке Haskell» со stepic.org. Может, за тебя вообще весь курс пройти?

iVS ★★★★★ ()
Ответ на: комментарий от iVS

Ну смотри сам. Курс для новичкой. Разбора заданий нет. Комментарии что-то не помогли. В видео-лекциях информации, видимо, не достаточно. Текстбука не дали. Где копать не сказали.

Будь я тобой, я бы, конечно, решил сам. Но не все такие умные к сожалению. И в чем наглость, попросить помощи в задании, которое не можешь решить сам? Это же не соревнование, а просто онлайн-курс.

trupanka ()
Ответ на: комментарий от trupanka

Разбора заданий нет. Комментарии что-то не помогли. В видео-лекциях информации, видимо, не достаточно. Текстбука не дали. Где копать не сказали.

Ты забыл упомянуть про мозги. Обычно, умные люди пользуются им.

Это же не соревнование, а просто онлайн-курс.

У курса есть сертификат, и если ты собираешься им воспользоваться в будущем, то заработал ты его нечестным путем.

iVS ★★★★★ ()
Ответ на: комментарий от nezamudich

Извини, других там не выдают. Нотариус — это юрист-недоучка, который умеет только штампы ставить?

iVS ★★★★★ ()
Ответ на: комментарий от trupanka

Религия не позволяет сказать правильный ответ?

Не, просто не хочу.

P.S. К тому же, я забыл. Глянуть у себя невозможно — доступ к заданиям прежнего курса заблокирован.

iVS ★★★★★ ()
Последнее исправление: iVS (всего исправлений: 1)
Ответ на: комментарий от iVS

У курса есть сертификат, и если ты собираешься им воспользоваться в будущем, то заработал ты его нечестным путем.

На этот сертификат посмотрят только работодатели-дураки.

Ты забыл упомянуть про мозги. Обычно, умные люди пользуются им.

Я об этом сказал ниже. О таких как ты... А я тупой, и мне нужна помощь.

trupanka ()
Ответ на: комментарий от trupanka

А я тупой, и мне нужна помощь.

Если ты тупой, то тебе не нужен хаскель, следовательно, бросил бы ты курс и занялся чем-то более практичным.

iVS ★★★★★ ()
Ответ на: комментарий от iVS

P.S. К тому же, я забыл. Глянуть у себя невозможно — доступ к заданиям прежнего курса заблокирован.

То есть ты не в состоянии решить эту задачу второй раз? Хорошо, хоть мозги есть.

Virtuos86 ★★★★★ ()
Последнее исправление: Virtuos86 (всего исправлений: 1)
Ответ на: комментарий от Virtuos86

P.S. К тому же, я забыл. Глянуть у себя невозможно — доступ к заданиям прежнего курса заблокирован.

То есть ты не в состоянии решить эту задачу второй раз?

Объясните вашу логику. Я должен был в уме держать все тонкости задания? Если я этого не делаю, то как из этого следует, что я не в состоянии решить эту задачу?

iVS ★★★★★ ()
Ответ на: комментарий от Miguel

Если только с типом у которого инстанс fromIntegral приводит к расходимости.

qnikst ★★★★★ ()
Ответ на: комментарий от MyTrooName

Ну убери y что как маленький и будет тебе расходимости.

qnikst ★★★★★ ()
Ответ на: комментарий от trupanka

convergent/divergent. по крайней мере в контексте пределов, но с алгоритмически заданными функциями вроде так же

MyTrooName ★★★★★ ()
Последнее исправление: MyTrooName (всего исправлений: 1)
Ответ на: комментарий от qnikst

не будет, поверь на слово, раз в ghci проверить не судьба

хаскель ленивый, до вычисления undefined не дойдет

MyTrooName ★★★★★ ()
Последнее исправление: MyTrooName (всего исправлений: 1)
Ответ на: комментарий от MyTrooName

Окей дружище, объясни как мне как сработает паттер матчинг (первая строка) без вычисления аргумента.

qnikst ★★★★★ ()
Ответ на: комментарий от qnikst

Другое дело, что автор может спрашивать о том что возвращается Num a => a -> Char, и мы не пкредаем второй аргумент. Тогда да расходимости нет. Но формально это не попадает под «любые параметры»

qnikst ★★★★★ ()
Ответ на: комментарий от qnikst

fromInteger. И учти, что, скажем, (10 :: Int -> Int) может и скомпилироваться.

Miguel ★★★★★ ()
Ответ на: комментарий от Miguel

Не понял про скопилироваться, любой тип с классом Num скомпилируется, или что ты имел ввиду?

qnikst ★★★★★ ()
Ответ на: комментарий от qnikst

Он имел ввиду, что даже не определено, является ли corge функцией или нет, не говоря уже про сходимость/расходимость.

nezamudich ★★ ()
Ответ на: комментарий от qnikst

Именно. И, в частности, тип Int -> Int может иметь инстанс Num.

Miguel ★★★★★ ()
Ответ на: комментарий от Miguel

Я все еще не понимаю, что ты пытаешься донести. Я переспросил, что ты про Num и fromInteger (я там неуследил и автокомплит на fromIntegral поменял), если да, то пожалуйста ответь просто «да», и все.

qnikst ★★★★★ ()
Ответ на: комментарий от Miguel

В этом кстати проблемы нету, а проблема есть в:

instance Num Bogus where
  fromInteger _ = undefined

Для такой функции corge расходится, а для неудачного интсанса для Int->Int, corge это нормально и ожидаемо работающая сходящаяся функция.

При учете того, что там какая-нить адекватная реализация типа (const 10) а не undefined как в примере у меня.

qnikst ★★★★★ ()
Последнее исправление: qnikst (всего исправлений: 1)
Ответ на: комментарий от qnikst

Кто сказал, что в результате окажется «сходящаяся функция»?

Miguel ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.