169 похожих чатов

Здравствуте. Изучаю Haskell. Есть вопрос, помогите пожалуйста понять одну вещь. Вот

есть typeclass Show. У него есть метод show . С ним все понятно. Но также есть метод showPrec. И я не понимаю, что он делает и зачем нужен. Да, он принимает число (операторный приоритет), данные какого-то типа и ...

Тут мое понимание заканчивается. ShowS это фукнция, которая ... что ? Как это связано с результатом showPrec ? Можете ли вы привести простой понятный пример?

13 ответов

16 просмотров

на вопрос "которая что?" отлично отвечает документация https://hackage.haskell.org/package/base-4.18.0.0/docs/Text-Show.html#t:ShowS попробуйте сформулировать более точный вопрос

xfides-Barabanov Автор вопроса
Cheese Syrowiecki
на вопрос "которая что?" отлично отвечает документ...

Я там был. Мало что понял из этого текста. Ищу более простые формулировки и, что более важно, простой пример этой операции

xfides Barabanov
Я там был. Мало что понял из этого текста. Ищу бол...

вообще примеры есть там же в документации. из класса можно перейти к экземплярам и коду их реализации. к сожалению, код почти всегда сгенерирован, но можно найти и не совсем пустую реализацию: instance Show RecSelError where showsPrec _ (RecSelError err) = showString err

если на пальцах, showsPrec должна давать дописывать в начало буфера. или давать функцию дописывания в начало буфера, что в сущности одно и то же

xfides-Barabanov Автор вопроса
Cheese Syrowiecki
если на пальцах, showsPrec должна давать дописыват...

О, уже какие-то мысли для меня. значит - есть какой то- буфер, в который мы можем помещать какие-то значение - почему именно в начало? а не в конец? - правильно ли я понимаю, что все то, что мы собрали в буфере, мы потом будет выводить как единую строку? - если да, то зачем параметр приоритета?

xfides Barabanov
О, уже какие-то мысли для меня. значит - есть ка...

да, скорее всего, оно всё будет выведено как целая строка, но не обязательно

xfides Barabanov
О, уже какие-то мысли для меня. значит - есть ка...

ShowS это просто оптимизация конкатенации

xfides Barabanov
О, уже какие-то мысли для меня. значит - есть ка...

приоритет нужен, чтобы решать, когда надо или не надо расставлять скобки

xfides Barabanov
О, уже какие-то мысли для меня. значит - есть ка...

я специально отвечаю короткими мыслями, чтобы дать вам самостоятельно разобраться. это же чат бесплатной помощи, а не платные преподаватели

Предположим, вы хотите реализовать функцию show, которая по дереву синтаксического разбора выражения (AST) строит строку - текстовое представление выражения. Например, для узла который соответствует бинарной операции (+) надо вывести в строку левый аргумент, потом собственно знак оператора (+), потом правый аргумент. Типы поддеревьев могут быть разные, потребуем, чтобы они реализовывали интерфейс Show. Тогда show для (+) может использовать show, чтобы вывести поддеревья для аргументов. Но тут возникает проблемка - в зависимости от контекста подвыражение может понадобиться заключать в скобки. Можно, конечно, делать это всегда, но как-то неаккуратненько. И тут на помощь приходит showPrec...

Алексей ayaye :)
Предположим, вы хотите реализовать функцию show, к...

Кажется я понял немного. Нужно начать с того, что стоит представить что мы реализуем Show для какого-то весьма сложного типа данных, так? В частности для какой-то древовидной структуры данных?

Похожие вопросы

Обсуждают сегодня

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
Открыл свой двухкилобайтный экзешник в x32dbg, а тут какая-то хрень. Смущает кнопка "выполнить до пользовательского кода", а что ещё может быть в файле помимо него ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
11
Вопрос тем кто смотрит видео и слушает подкасты - как вы потом ищете нужную вам информацию? Вот статью я прочитал, потом могу искать нужную мне часть банальным поиском. Пропус...
Aleksandr Druzhinin
4
Мне были интересны дишные хаки и я нашёл любопытный способ на форуме через __traits, что-то вроде int delegate(int) fac = (int n) => n == 0 ? 1 : n * __traits(parent, {})(n - ...
Constantin F.
1
Всем привет, подскажите/посоветуйте пожалуйста. Фаердак компоненты, имею одно место где бизнес хочет видеть при открытии формы список всех клиентов, это порядка 30к. Мои дово...
Sasha Sch
14
Ребят, если кто в курсе - скажите, а в загранке такое же засилье маркетплейсов? или там простые сермяжные интернет-магазины живут попроще?
Андрей [aharito] Харитонов
14
@FAssembler ты много с формами работал, как цикл обработки сообщений от окошек надо делать, чтобы IsDialogMessage не ломал ввод в эдиты и навигация по табам работала?
The Bird of Hermes
8
Карта сайта