Size: a a a

2021 April 11

IO

I O in Haskell
Все шесть абсолютно идентичны, если их рядом написать гхц после оптимизаций выдает

test1 :: forall a. Semigroup a => [a] -> [a] -> Maybe a
test1 = ...

test2 = test1
test3 = test1
test4 = test1
test5 = test1
test6 = test1
источник

A

Aleksandr Khristenko in Haskell
А если у меня такой случай, я импортирую модуль и использую какой-то тип из этого модуля.
Но сам по себе этот тип в модуле не определен а реекспортируется из какого-то другого модуля.
Можно как-то просто узнать модуль, где этот тип изначально определен?
источник

IO

I O in Haskell
:info smth в ghci вроде выдает где определен
источник

A

Aleksandr Khristenko in Haskell
Угу, пишет полные пути типов. Инетерсно, это как-то в vscode прикрутить можно?
источник

IO

I O in Haskell
haskell-language-server в информации это показыват, как конкретно в vscode это вызывается не знаю
источник

IO

I O in Haskell
информации всм документации к идентификатору
источник

AA

A64m AL256m qn<co... in Haskell
думаю, что нет - форматтеры используются как библиотеки, по крайней мере в те времена когда надо было билдить хлс самому - видно было что они билдятся
источник

IK

Ilya Kos in Haskell
Сейчас так же
источник

A

Aleksandr Khristenko in Haskell
Хм. Пусть у нас есть какой-то модуль, он импортирует себе типA из другого модуля и определяет свой типБ, где в качестве поля использует типА. При этом сам типА не реэкспортируется.
Получается в своем коде мы геттером можем получить типА, но чтобы смотреть его поля нужно отдельно его импортирвать.
Это вообще нормальная практика?
источник

к

кана in Haskell
да
источник

к

кана in Haskell
если есть две функции, одна возвращает байтстринг, а вторая принимает, и нам нужно их скомпозировать, то нет смысла импортировать байтстринг
источник

Y

Yuuri in Haskell
@aadaa_fgtaa прошу прощения за оффтоп, но что означает ваш таинственный ник?
источник

KV

Kirill Valyavin in Haskell
ТипА может быть абстрактный, т. е. гарантировать корректную работу только при использовании методов, и поэтому может скрывать своё представление например
источник

к

кана in Haskell
не, я думаю тут речь не про то. Не про неэкспортирование конструкторов, а про неэкспортирование самого типа

module A (f) where
 data X = X
 f :: X
 f = X

module B where
 import A

 g :: _ -- нельзя написать тип
 g = f
источник

к

кана in Haskell
а, нет, не прав, там и про поля тоже, тогда тем более это нормальная практика, и многие считают ее очень хорошей, ведь она запрещает клиентскому коду пологаться на реализацию библиотеки, значит можно менять определение, но сохранить api
источник

IO

I O in Haskell
Первые две группы <спойлер> перехвата шифра "Аретуза" из "Криптономикона" Нила Стивенсона. (также прошу прощения ща оффтоп)
источник

A

Aleksandr Khristenko in Haskell
А разве если мы что-то импортируем в модуль но не используем то это как-то на результате отражается?
Кстати прикольно, но с record-dot-preprocessor такой проблеммы нет. Можно получать данные внутрь на любой уровень вложенности без импортирования явного типов.
источник

к

кана in Haskell
1. нет
2. в этом вся суть рекорд-дот-синтаксиса в частности и ОРФ в целом
источник

к

кана in Haskell
потому что .x превращается в getField @"x", нужно только наличие инстанса, а не определение типа
источник

к

кана in Haskell
с лейблами то же самое будет
источник