Size: a a a

2021 June 01

к

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

YS

Yan Shkurinskiy in Haskell
так теперь оно однозначное
источник

к

кана in Haskell
то естт вместо runDb db сделать runDb @db
источник

YS

Yan Shkurinskiy in Haskell
AllowAmbiguousTypes можно убрать кажется
источник

YS

Yan Shkurinskiy in Haskell
Но кмк лучше AllowAmbiguousTypes и тайп параметры
источник

OS

Oleksandr Shyshko in Haskell
```
Not in scope: type variable ‘db’
   Perhaps you meant type constructor or class ‘Db’ (line 10)
  |
29 |     id1 <- (runDb @db) $ nextId db

```
источник

YS

Yan Shkurinskiy in Haskell
forall db .
источник

YS

Yan Shkurinskiy in Haskell
надо в сигнатуру
источник

YS

Yan Shkurinskiy in Haskell
и ScopedTypeVariables
источник

YS

Yan Shkurinskiy in Haskell
или как-то так расширение(
источник

к

кана in Haskell
class X a where
 x :: String

instance X String where
 x = "String"

instance X Int where
 x = "Int"

f :: forall a. X a => String
f = x @a
источник

OS

Oleksandr Shyshko in Haskell
вот так работает:

{-# LANGUAGE TypeFamilies, ScopedTypeVariables, TypeApplications, AllowAmbiguousTypes #-}
...

run :: forall db . Db db => db -> IO ()
run db = do
   id1 <- (runDb @db) $ nextId db
   print id1
источник

OS

Oleksandr Shyshko in Haskell
но всё равно хочется избавиться от TypeApplications, чтобы просто писать runDb. Если я правильно помню, вы говорили, что это можно решить, прописав в класс фандепы? Как это сделать?
источник

к

кана in Haskell
не в класс, а в тайпфемели в данном случае
источник

к

кана in Haskell
type M a = result :: Type -> Type | result -> a
источник

OS

Oleksandr Shyshko in Haskell
```parse error on input ‘|’
  |
12 |     type M a = result :: Type -> Type | result -> a
  |                                       ^

```
не поделитесть статьей или вики на эту тему?
источник

к

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

OS

Oleksandr Shyshko in Haskell
благодарю @kana_sama @Ordinary_man
источник

[

[BRM]White Rabbit in Haskell
ну, видимо, да
источник

IK

Ilya Kos in Haskell
Да
источник