Size: a a a

2020 July 12

MK

Maxim Koltsov in Haskell
Без него ScopedTypeVariables не работают
источник

MK

Maxim Koltsov in Haskell
Хотя внутри классов должны, не понимаю почему там ломалось
источник

AP

Anatolii Prylutskyi in Haskell
я посмотрел тип getField
:t getField
getField :: forall k (x :: k) r a. HasField x r a => r -> a
источник

AP

Anatolii Prylutskyi in Haskell
у меня вопрос возник, зачем там k?
источник

AP

Anatolii Prylutskyi in Haskell
я себе также сделал
send :: forall k (x :: k) a m r. (MonadIO m, HasField x r (TQueue a), MonadReader r m) => a -> m ()
send act = do
 chan <- asks (getField @x)
 atomically $ writeTQueue chan act
источник

AP

Anatolii Prylutskyi in Haskell
мне не помогло особо
источник

AP

Anatolii Prylutskyi in Haskell
у меня там r конечно для ридера
источник

MK

Maxim Koltsov in Haskell
Anatolii Prylutskyi
я себе также сделал
send :: forall k (x :: k) a m r. (MonadIO m, HasField x r (TQueue a), MonadReader r m) => a -> m ()
send act = do
 chan <- asks (getField @x)
 atomically $ writeTQueue chan act
И что говорит?
источник

JS

Jerzy Syrowiecki in Haskell
УМВР

{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE FlexibleContexts    #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications    #-}

module B where

import           Control.Concurrent.STM
import           Control.Monad.IO.Class
import           Control.Monad.Reader
import           GHC.Records

send ::
 forall x m a r.
 (MonadIO m, HasField x r (TQueue a), MonadReader r m) => a -> m ()
send a = do
 chan <- asks (getField @x)
 liftIO $ atomically $ writeTQueue chan a
источник

AP

Anatolii Prylutskyi in Haskell
да все тоже, он x0
источник

AP

Anatolii Prylutskyi in Haskell
c AllowAmbiguius у меня тоже
источник

AP

Anatolii Prylutskyi in Haskell
но я потом не могу это использывать
источник

JS

Jerzy Syrowiecki in Haskell
Anatolii Prylutskyi
c AllowAmbiguius у меня тоже
ну, всё правильно
источник

JS

Jerzy Syrowiecki in Haskell
Anatolii Prylutskyi
но я потом не могу это использывать
почему?
источник

MK

Maxim Koltsov in Haskell
Jerzy Syrowiecki
УМВР

{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE FlexibleContexts    #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications    #-}

module B where

import           Control.Concurrent.STM
import           Control.Monad.IO.Class
import           Control.Monad.Reader
import           GHC.Records

send ::
 forall x m a r.
 (MonadIO m, HasField x r (TQueue a), MonadReader r m) => a -> m ()
send a = do
 chan <- asks (getField @x)
 liftIO $ atomically $ writeTQueue chan a
А GHC.Records это что, кстати?
источник

MK

Maxim Koltsov in Haskell
Когда он появился?
источник

JS

Jerzy Syrowiecki in Haskell
Anatolii Prylutskyi
c AllowAmbiguius у меня тоже
AllowAmbiguousTypes нужен, потому что x нет в типе выражения. откуда его компилятор возьмёт?
источник

JS

Jerzy Syrowiecki in Haskell
Maxim Koltsov
А GHC.Records это что, кстати?
это где живёт getField
источник

AP

Anatolii Prylutskyi in Haskell
Jerzy Syrowiecki
УМВР

{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE FlexibleContexts    #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications    #-}

module B where

import           Control.Concurrent.STM
import           Control.Monad.IO.Class
import           Control.Monad.Reader
import           GHC.Records

send ::
 forall x m a r.
 (MonadIO m, HasField x r (TQueue a), MonadReader r m) => a -> m ()
send a = do
 chan <- asks (getField @x)
 liftIO $ atomically $ writeTQueue chan a
давай сюда добавил класс Action который Action x a
источник

AP

Anatolii Prylutskyi in Haskell
чтобы связать и имя поля в Env
источник