blkmrkt
как я только ни пытался подставлять к id вот этот тип на этой же строчке, нифига не получается
Anatolii
А кто тебе ошибку выдаёт?
Anatolii
Ты этот код пробовал в ghci загружать?
Vladimir
Может, проблема в отступах и надо рекорды с новой строки объявлять
Anatolii
Ха
Anatolii
Оно ж конфликтует с id из Prelude
Anatolii
Я в сообщение вчитался
Vladimir
Я тоже
Vladimir
blkmrkt
Оно ж конфликтует с id из Prelude
Ну и еще с id в тройке других записей в этом же модуле. Дело в том ведь что DuplicateRecordFields позволили мне это определить в одном файле, но как теперь недвусмысленно референснуть один из них тут же?
Vladimir
"the renamer will determine which is meant at use sites."
Vladimir
походу оно само как-то должно
Vladimir
https://ghc.haskell.org/trac/ghc/wiki/Records/OverloadedRecordFields/DuplicateRecordFields тут написано, Вроде, как можно, а как нельзя
Vladimir
с селекторами просто так все равно нельзя, походу(
Vladimir
к тому же, id из Prelude объявлен не в том файле же, где DublicateRecordFields, поэтому ренеймер не будет трогать функцию id из прелюда, отсюда и некомпиляция, походу
blkmrkt
Вот на SO пост объясняет проблему, и в ответе вроде вариант который должен работать, но нифига подобного: https://stackoverflow.com/questions/37395098/how-to-disambiguate-selector-function
Vladimir
а если сделать import Prelude hiding (id) ?
blkmrkt
Vladimir
чтобы id из прелюда не вылезал
Vladimir
и конфилик был только с твоими объявленными под DuplicateRecordFields функциями
Vladimir
конфликт*
blkmrkt
Vladimir
я сам не пользовал это расширение, сочинял уникальные имена для функций :DF
blkmrkt
теперь на prelude не ругается, но все то же
blkmrkt
во всех сорцах включена прагма DuplicateRecordFields
Vladimir
Я тоже парсил чужой, но просто руками писал инстансы fromJSON в таком случае. Не очень удобно, но у меня и приложение не очень большое было
blkmrkt
а нельзя как-нибудь вручную указать тип, id которого я имею ввиду?
Vladimir
дык, вроде (id t :: Int)
Vladimir
или что там
Vladimir
а, рекорд, к которому функция принадлежит, а не тип возвращаемого значения, пардом, ошибся
Vladimir
по-моему нет. Насколько я понял, эта штука работает так - если из контекста понятно, из какого рекорда ты функцию используешь, то на этапе компиляции ее переименовывают вместе со всеми использованиями. А если не понятно, то извиняй, чет не вышло)
Anatolii
id t попробуй в скобки взчть
Vladimir
т.е. в твоем случае должно быть понятно, что это за функция, в зависимости от типа t
Anatolii
А попробуй сюда функцию полностью выложить
Anatolii
Там компилятор есть откуда тип t вывести?
Vladimir
ну судя по верхним скринам, там кейс по Maybe t
Vladimir
поэтому, по идее, тип должен быть указан внутри Maybe
Vladimir
и понятен
Vladimir
Maybe task, т.е.
Anatolii
Там на скрине выше в case стоит Just t а потом обращается к st
Vladimir
тогда застыли в ожидании кода)
blkmrkt
ну вот такой код, t тут будет конкретным инстансом я так думаю
Вжик
подкиньте группу по Scala
Nikolai
https://telegram.me/scala_ru
Вжик
благодарю
Mansur
Vladislav
Anonymous
Ребят, кто понял теорию категорий?
Evgeniy
blkmrkt
Anatolii
Там printf надо
Anatolii
Тв спрятал id из Prelude?
blkmrkt
Anatolii
И что теперь пишет?
blkmrkt
И что теперь пишет?
ну тож самое:
Ambiguous occurrence ‘id’
It could refer to either the field ‘id’,
imported from ‘VKAPI’ at app/Harvester.hs:34:1-22
or the field ‘id’,
imported from ‘VKAPI’ at app/Harvester.hs:34:1-22
or the field ‘id’, defined at app/Harvester.hs:59:28
or the field ‘id’, defined at app/Harvester.hs:51:3
Anatolii
Очень странно
Anatolii
Я проверял у себя
Anatolii
Все норм
Anatolii
Это ты stack build запустил?
blkmrkt
ага, ghc-mod то же самое
Anatolii
Похоже что у тебя не 8
Anatolii
Но я помню что ты говорил что 8
blkmrkt
у меня 2 типа с id в этом же самом файле, и 2 типа с id из VKAPI, во всех файлах включено {-# LANGUAGE DuplicateRecordFields #-}
blkmrkt
8.0.1
Anatolii
Агп
Нурлан
а какой сейчас тип у id? раз ты спрятал его из Prelude
Anatolii
Так не прокатит
blkmrkt
>stack ghc — —version
>The Glorious Glasgow Haskell Compilation System, version 8.0.1
Anatolii
Оно только в пределах 1го модуля может быть
Anatolii
Хотя погоди
Anatolii
Странно это все
blkmrkt
угу, странно
blkmrkt
вот в этом треде расписан именно такой же пример с которым у меня проблема, но ОП пишет внизу следующее:
Of course it can easily be fixed by adding a type annotation but ideally I would rather not use such an annotation in this case.
Не вдупляю как еще можно добавить аннотацию типа к id.
Anatolii
А попробуй в модуле vkapi
Anatolii
Написать функцию которая к id обращается
blkmrkt
blkmrkt
сек
Anatolii
Ещё вариант
Anatolii
Можно попробовать сделать модуль