| Pending Connection
                  
                  
                    | Accepted Connection
                  
                  
                    | Rejected String
                  
                  
                  
                  
                  
                  и для каждого конструктора есть по призме
                  
                  
                  дальше, есть где-то вот такой код, он, конечно не правильный (представим, что это хаскель, тк суть вопроса не меняется)
                  
                  
                  
                  
                  
                  disconnect = do
                  
                  
                    env ← ask
                  
                  
                    liftEffect do
                  
                  
                      status ← Ref.read env.status
                  
                  
                      for_ (status ^? _Accepted) \c →
                  
                  
                        WebSocket.close c.socket
                  
                  
                      Ref.write (Connection.Closed Nothing) env.status
                  
                  
                  
                  
                  
                  я хочу закрыть сокет не только есть подключение в состоянии Accepted, но и в Pending, как это сделать и не писать два раза
                  
                  
                  for_ (status ^? _Pending) \c → WebSocket.close c.socket
                  
                  
                  for_ (status ^? _Accepted) \c → WebSocket.close c.socket
                  
                  
                  ?
                  
                  
                
Возможно https://www.stackage.org/haddock/lts-13.0/lens-4.17/Control-Lens-Combinators.html#v:failing Но в профункторных линзах такого нет. Вообще как тут обсуждалось, что было бы не плохо иметь инстанс альтернативы для призм
Обсуждают сегодня