Size: a a a

2021 April 15

KV

Kirill Valyavin in Haskell
Ну не-линзовые геттеры к счастью скоро можно будет выпилить к едрене фене
источник

KV

Kirill Valyavin in Haskell
Ну как скоро...
источник

Y

Yuuri in Haskell
А приходится
источник

Y

Yuuri in Haskell
Как сделать, чтобы cabal repl не пересобирал всё заново при переоткрытии?
источник

AA

A64m AL256m qn<co... in Haskell
запинить версии
источник
2021 April 16

S

Sooqa in Haskell
а почему нельзя так
data M a (b :: a -> c) = MkM a b
и вот так
_ = Cons show End
?
источник

AP

Aleksei (astynax) Pi... in Haskell
b справа в MkM нужно применить к чему-то
источник

AP

Aleksei (astynax) Pi... in Haskell
Конструктор значений не может хранить в поле конструктор типов
источник

AP

Aleksei (astynax) Pi... in Haskell
(b :: a -> c) слева в описании типа, это не аннотация "b — функция из значения типа a в значение типа с".
Это аннотация "b — функция из типа a в тип c"
источник

AP

Aleksei (astynax) Pi... in Haskell
Cons show End сделать можно, если как-то указать, что за тип будет на входе show. Без этого указания функцию нельзя будет ни к чему применить
источник

AP

Aleksei (astynax) Pi... in Haskell
> data T a = Cons (a -> String)
> x = Cons show
> :t x
x :: Show a => T a
вот тут известно (сохранено в типе), что будет подано на вход show
источник

AP

Aleksei (astynax) Pi... in Haskell
> data T where Cons :: forall a. (a -> String) -> T
> x = Cons show
> :t x
x :: T
так тоже можно сделать, но применить show, сохранённый в x, просто так не получится
источник

AP

Aleksei (astynax) Pi... in Haskell
> showUsing (Cons f) = f

<interactive>:25:22: error:
   • Couldn't match expected type ‘p’ with actual type ‘a -> String’
       because type variable ‘a’ would escape its scope
   ...
источник

AP

Aleksei (astynax) Pi... in Haskell
неоткуда взять a, чтобы восстановить тип f
источник

S

Sooqa in Haskell
Я хотел хранить в hlist'е полиморфные функции, ограниченные констрейнтом. Смысл был бы в том, что их можно было бы применять к любым типам из класса. Странно, что это невозможно.
источник

AP

Aleksei (astynax) Pi... in Haskell
hlist хранит информацию о типах элементов
источник

AP

Aleksei (astynax) Pi... in Haskell
> data Showable where Item :: forall a. Show a => a -> Showable
> l = [Item (1 :: Int), Item "foo"]
> showAll = show . map (\(Item x) -> show x)
> showAll l
"[\"1\",\"\\\"foo\\\"\"]"
источник

AP

Aleksei (astynax) Pi... in Haskell
вот гетерогенный список с применением метода класса к элементам
источник

S

Sooqa in Haskell
Не, я про функции говорю, а не элементы

Cons show (Cons id End)
Подобное
источник

AP

Aleksei (astynax) Pi... in Haskell
id не накладывает ограничение на элемент, а show — накладывает
источник