Size: a a a

2021 July 02

к

кана in Haskell
ща, я мог что-то напутать, найду табличку
источник

к

кана in Haskell
да, напутал, @ как бы делает невидимый аргумент видимым, то есть forall x. y тут x невидимый

а {} говорит, что этот аргумент нельзя сделать видимым, он может только вывестись

прикольно будет, если @ можно будет реализовать в виде оператора в будущем при желании, типа

(@) :: (forall (a :: k). b a) -> (forall (a :: k) -> b a)
f @ a = f :: b a

в лине

def {u} vis {A} {B : A -> Sort u} : (Π{x : A}, B x) → Π(x : A), B x :=
 λf x, (f : B x)

infixr @@:1 := vis
источник

VS

Vladislav Sabanov in Haskell
Всем привет!
Кто-нибудь помнит как называется тулза, чтобы визуализировать хаскельный проект в виде дерева из функций?
источник

DM

Dmitriy Mozhevitin in Haskell
про нотацию с {} в первый раз слышу, спасибо
источник

DM

Dmitriy Mozhevitin in Haskell
раз уж речь зашла про тайп аппликейшнс:

эмпирическими наблюдениями я понял, что порядок применения соответствует с порядком следования типовых переменных после квантора forall

следовательно вопрос: можно ли в функции из двух аргументов сделать тайп аппликейшн только по второму?
источник

MK

Maxim Koltsov in Haskell
можно
источник

MK

Maxim Koltsov in Haskell
с помощью улитки
источник

MK

Maxim Koltsov in Haskell
foo @_ @MyType
источник

DM

Dmitriy Mozhevitin in Haskell
о, точно
источник

DM

Dmitriy Mozhevitin in Haskell
спасибо
источник

к

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

к

кана in Haskell
а там гарантированно всегда будет тайп-апп только по второму?
источник

к

кана in Haskell
если да, то вот для этого как раз {} и нужен

или можно поменять аргументы в forall местами (работает только в некоторых случаях)
источник

DM

Dmitriy Mozhevitin in Haskell
не уверен
источник

DM

Dmitriy Mozhevitin in Haskell
{} нужно чтобы запретить тайпапп или же чтобы не писать улитку лишний раз?
источник

DM

Dmitriy Mozhevitin in Haskell
просто я не могу придумать кейс где нужно намеренно запрещать тайпапп по переменной
источник

к

кана in Haskell
тайпапп нужен обычно когда типоаргумент не может вывестись из аргументов
источник

DM

Dmitriy Mozhevitin in Haskell
ну или когда мы какой-нить Symbol хотим прокинуть или что-то еще
источник

к

кана in Haskell
поэтому использовать тайпапп когда он выводится обычно не нужно
источник

DM

Dmitriy Mozhevitin in Haskell
протащить на тайп левеле какую-то инфу
источник