- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
module Control.Monad.Warning (
errorToWarning
, errorsToWarnings
, justW
, rightW
, WarningT(..)
, MonadWarning(..)
, module Control.Monad.Except
, module Control.Monad.Writer
)
where
import Control.Applicative
import Control.Monad.Except
import Control.Monad.Writer
import Control.Monad.Reader
import Data.Monoid
newtype WarningT w e m a = WarningT { runWarningT ∷ w → m (w, Either e a) }
class (Monad m) ⇒ MonadWarning w e m | m → w e where
warning ∷ w → m ()
throwW ∷ e → m a
catchW ∷ m a → (e → m a) → m a
instance (Functor m) ⇒ Functor (WarningT w e m) where
fmap f a = WarningT $ \w → let f' (w', a') = (w', (fmap f) a')
in fmap f' $ runWarningT a w
instance (Applicative m) ⇒ Applicative (WarningT w e m) where
pure a = WarningT $ \w → pure (w, Right a)
f <*> a = WarningT $ \w → runWarningT f w
(w', f') =
(w'', a') = runWarningT a w'
in case (f', a') of
(Right f'', Right a'') → undefined --runWarningT (f'' a'') w''
(Left l, _) → pure (w', Left l)
(_, Left l) → pure (w'', Left l)
instance (Monad m, Monoid w) ⇒ Monad (WarningT w e m) where
return a = WarningT $ \w → return (w, Right a)
a >>= b = WarningT $ \w → do
(w', e) ← runWarningT a w
case e of
Right r → runWarningT (b r) w'
Left l → return (w', Left l)
fail = WarningT . fail
instance (Monad m, Monoid w) ⇒ MonadWarning w e (WarningT w e m) where
warning w' = WarningT $ \w → return (w `mappend` w', Right ())
throwW e = WarningT $ \w → return (w, Left e)
catchW a f = WarningT $ \w → do
(w', e) ← runWarningT a w
case e of
Right e' → return (w', Right e')
Left e' → runWarningT (f e') w'
instance (MonadWarning w e m) ⇒ MonadError e m where
throwError = throwW
catchError = catchW
instance (Monoid w, MonadWarning w e m) ⇒ MonadWriter w m where
tell = warning
instance MonadTrans (WarningT w e) where
lift a = WarningT $ \w → do
a' ← a
return $ (w, Right a')
instance (Monoid w, MonadIO m) ⇒ MonadIO (WarningT w e m) where
liftIO = lift . liftIO
instance (MonadReader r m, Monoid w) ⇒ MonadReader r (WarningT w e m) where
ask = lift ask
-- TODO: Check and test it.
local f a = WarningT $ \w → local f $ runWarningT a w
errorToWarning ∷ (Monoid w, MonadWarning w e m) ⇒ (e → w) → (e → m a) → m a → m a
errorToWarning f g a = catchW a (\e → warning (f e) >> g e)
errorsToWarnings ∷ (Monoid w, MonadWarning w e m) ⇒ (e → w) → [m a] → m [a]
errorsToWarnings f = foldl go (return [])
where go r a = errorToWarning f (const r) $ do
a' ← a
r' ← r
return $ a' : r'--
justW ∷ (MonadWarning w e m) ⇒ e → Maybe a → m a
justW _ (Just x) = return x
justW e Nothing = throwW e
rightW ∷ (MonadWarning w e m) ⇒ (e' → e) → Either e' a → m a
rightW _ (Right x) = return x
rightW f (Left e) = throwW (f e)
LispGovno 22.03.2016 11:11 # 0
CHayT 22.03.2016 19:56 # 0
guest 25.02.2017 08:28 # −15
guest 03.03.2017 23:20 # −15
LispGovno 22.03.2016 11:15 # 0
kegdan 22.03.2016 11:37 # +2
100 строк на хаскелле - это ж целое кладбИще целая программа на си, с блекджеком и шлюхами
LispGovno 22.03.2016 11:52 # +3
3.14159265 22.03.2016 14:05 # +2
Опять хачкель! - ну, теперь стало быть, пошло, пропал DOM. Придется уезжать, но куда спрашивается.
Все будет, как по маслу. Вначале каждый вечер функцианальщина, затем в сортирах замерзнет ПХП, потом лопнет boost у крестоблядей и так далее.
LispGovno 22.03.2016 14:08 # 0
CHayT 22.03.2016 20:01 # +6
gost 23.03.2016 10:41 # +15
Опять хачкель! - ну, теперь стало быть, пошло, пропал DOM. Придется уезжать, но куда спрашивается.
Все будет, как по маслу. Вначале каждый вечер функцианальщина, затем в сортирах замерзнет ПХП, потом лопнет boost у крестоблядей и так далее. ДОМ? когда ты вглядываются в тебя MonadTanks, MonadWargaming... пора мне бы завязать с этим вот этим.
1024-- 23.03.2016 10:47 # +21
gost 23.03.2016 11:18 # +15
Счас прохожу splinter cell. хитман был лучше. Серьезно, вдумайтесь своими никому не буду каждый месяц винду сносить. Делов то - переустановится, правда, тормозило, памяти 512.
AoE 3 - одна стратегии, но могу и в что-то немного гейское. >> увлечения к лимиту. У биткоин? Так много? Точно не РФ. Наверное, какая-нибудь из стран Вестойропы или САСШ.
Кстати, в Совке мелкие алмазы использователи Windows 7 и Windows 10 выходит на рынок 29 июля в 190 странами нато у них поддерживается от обычной платить.
Угадайте страны - на нигеров полевых В
3_14dar 23.03.2016 16:29 # 0
guest 11.02.2017 05:31 # −15
guest 20.01.2017 20:42 # −15
guest 28.02.2017 13:25 # −15
guest 28.02.2017 13:26 # −15
guest 15.04.2017 07:44 # −5
guest 10.02.2017 04:14 # −15
guest 15.04.2017 06:10 # −5
bakagaijin 22.03.2016 18:19 # 0
3.14159265 24.03.2016 22:50 # +1
guest 04.03.2017 05:51 # −15
guest 04.03.2017 06:00 # −15
guest 04.03.2017 07:32 # −15
guest 04.03.2017 10:58 # −15
guest 04.03.2017 15:12 # −15
guest 04.03.2017 15:51 # −15
guest 04.03.2017 17:29 # −15
guest 04.03.2017 18:17 # −15
guest 04.03.2017 18:29 # −15
guest 04.03.2017 19:12 # −15
guest 04.03.2017 20:30 # −15
guest 04.03.2017 20:33 # −15
guest 04.03.2017 21:46 # −15
guest 04.03.2017 21:51 # −15
guest 04.03.2017 22:46 # −15
guest 06.03.2017 23:40 # −15
guest 07.03.2017 00:49 # −15
guest 07.03.2017 01:22 # −15
guest 07.03.2017 01:54 # −15
guest 07.03.2017 02:00 # −15
guest 07.03.2017 02:44 # −15
guest 07.03.2017 05:02 # −15
guest 07.03.2017 06:10 # −15
guest 07.03.2017 06:59 # −15
guest 07.03.2017 08:18 # −15
guest 07.03.2017 10:08 # −15
guest 07.03.2017 11:13 # −15
guest 07.03.2017 13:26 # −15
guest 07.03.2017 14:08 # −15
guest 07.03.2017 15:41 # −15
guest 07.03.2017 15:43 # −15
guest 07.03.2017 16:52 # −15
guest 07.03.2017 16:57 # −15
guest 07.03.2017 17:50 # −15
guest 07.03.2017 18:27 # −15
guest 07.03.2017 19:01 # −15
guest 07.03.2017 20:57 # −15
guest 07.03.2017 21:46 # −15
guest 07.03.2017 22:33 # −15
barop 08.03.2017 03:01 # −15
скоро багры пойдут
guest 09.03.2017 23:16 # −15
Friedrich_Engels 09.03.2017 23:20 # 0
guest 10.03.2017 00:07 # −15
guest 10.03.2017 00:18 # −15
guest 10.03.2017 01:06 # −15
guest 10.03.2017 01:14 # −15
guest 10.03.2017 01:45 # −15
guest 10.03.2017 02:03 # −15
guest 10.03.2017 04:20 # −15
guest 10.03.2017 04:55 # −15
guest 10.03.2017 07:03 # −15
guest 10.03.2017 07:49 # −15
guest 10.03.2017 07:51 # −15
guest 10.03.2017 09:22 # −15
guest 10.03.2017 10:15 # −15
guest 10.03.2017 10:39 # −15
guest 10.03.2017 12:12 # −15
guest 10.03.2017 14:38 # −15
guest 10.03.2017 16:29 # −15
guest 10.03.2017 20:09 # −15
guest 10.03.2017 20:59 # −15
guest 11.03.2017 00:42 # −15
guest 11.03.2017 00:59 # −15
guest 11.03.2017 01:14 # −15
guest 11.03.2017 02:01 # −15
guest 11.03.2017 02:35 # −15
guest 11.03.2017 02:48 # −15
guest 11.03.2017 03:48 # −15
guest 11.03.2017 04:18 # −15
guest 11.03.2017 04:50 # −15
guest 11.03.2017 05:21 # −15
guest 11.03.2017 07:21 # −15
guest 11.03.2017 08:43 # −15
guest 31.03.2017 01:47 # −15
guest 31.03.2017 02:09 # −15
guest 31.03.2017 03:38 # −15
guest 31.03.2017 03:44 # −15
guest 31.03.2017 04:45 # −15
guest 31.03.2017 05:11 # −15
guest 31.03.2017 06:14 # −15
guest 31.03.2017 06:26 # −15
guest 31.03.2017 06:44 # −15
guest 31.03.2017 06:53 # −15
guest 31.03.2017 07:46 # −15
guest 31.03.2017 08:40 # −15
guest 31.03.2017 09:58 # −15
guest 31.03.2017 10:11 # −15
guest 31.03.2017 10:17 # −15
guest 31.03.2017 11:08 # −15
guest 31.03.2017 12:32 # −15
guest 31.03.2017 12:56 # −15
guest 31.03.2017 13:47 # −15
guest 31.03.2017 15:16 # −15
guest 31.03.2017 16:04 # −15
guest 31.03.2017 16:24 # −15
guest 31.03.2017 17:01 # −15
guest 31.03.2017 17:16 # −15
guest 31.03.2017 17:35 # −15
guest 31.03.2017 18:22 # −15
guest 31.03.2017 21:28 # −15
guest 31.03.2017 21:45 # −15
guest 01.04.2017 00:26 # −14
guest 01.04.2017 02:05 # −15
guest 01.04.2017 03:10 # −15
guest 01.04.2017 04:58 # −15
guest 01.04.2017 07:23 # −15
guest 01.04.2017 10:18 # −15
guest 01.04.2017 11:41 # −15
guest 01.04.2017 12:31 # −9
guest 01.04.2017 13:49 # −15
guest 01.04.2017 14:15 # −15
guest 01.04.2017 16:04 # −15
guest 01.04.2017 16:36 # −15
guest 01.04.2017 17:46 # −14
guest 01.04.2017 17:52 # −15
guest 01.04.2017 18:33 # −15
guest 01.04.2017 19:29 # −15
guest 01.04.2017 20:35 # −15
guest 01.04.2017 22:18 # −15
guest 04.04.2017 04:03 # −15
guest 04.04.2017 06:20 # −15
guest 04.04.2017 10:47 # −15
guest 04.04.2017 12:52 # −15
guest 04.04.2017 14:09 # −14
guest 04.04.2017 14:09 # −15
guest 04.04.2017 14:42 # −15
guest 04.04.2017 17:35 # −15
guest 04.04.2017 22:31 # −15
guest 06.04.2017 23:35 # −15
guest 06.04.2017 23:54 # −15
guest 07.04.2017 00:37 # −15
guest 07.04.2017 01:48 # −15
guest 07.04.2017 03:33 # −15
guest 07.04.2017 04:57 # −15
guest 07.04.2017 05:38 # −15
guest 07.04.2017 06:12 # −15
guest 07.04.2017 08:04 # −15
guest 07.04.2017 09:53 # −15
guest 07.04.2017 10:21 # −15
guest 07.04.2017 15:28 # −15
guest 07.04.2017 18:21 # −15
guest 07.04.2017 18:23 # −15
guest 07.04.2017 19:58 # −15
guest 07.04.2017 21:36 # −15
guest 07.04.2017 23:25 # −15
guest 08.04.2017 00:42 # −15
guest 08.04.2017 03:16 # −15
guest 08.04.2017 06:19 # −15
guest 10.04.2017 23:02 # −10
guest 11.04.2017 00:06 # −10
guest 11.04.2017 01:11 # −10
guest 11.04.2017 01:54 # −10
guest 11.04.2017 04:25 # −10
guest 11.04.2017 05:50 # −10
guest 11.04.2017 09:11 # −10
guest 11.04.2017 09:17 # −10
guest 11.04.2017 12:22 # −10
guest 11.04.2017 14:30 # −10
guest 11.04.2017 16:05 # −10
guest 11.04.2017 16:43 # −10
guest 11.04.2017 16:53 # −10
guest 11.04.2017 19:39 # −12
guest 11.04.2017 20:30 # −12
Cnamep 11.04.2017 20:37 # 0
guest 11.04.2017 21:22 # −11
guest 11.04.2017 21:26 # −11
guest 11.04.2017 22:24 # −11
guest 13.04.2017 23:44 # −11
guest 14.04.2017 01:19 # −11
guest 14.04.2017 02:08 # −11
guest 14.04.2017 02:46 # −11
guest 14.04.2017 02:53 # −11
guest 14.04.2017 05:05 # −11
guest 14.04.2017 05:35 # −11
guest 14.04.2017 05:45 # −11
guest 14.04.2017 07:01 # −11
guest 14.04.2017 07:19 # −11
guest 14.04.2017 07:27 # −11
guest 14.04.2017 08:09 # −11
guest 14.04.2017 08:39 # −11
guest 14.04.2017 08:50 # −11
guest 14.04.2017 09:16 # −11
guest 14.04.2017 15:13 # −11
guest 14.04.2017 17:50 # −11
guest 15.04.2017 01:31 # −5
guest 15.04.2017 03:16 # −5
guest 15.04.2017 03:46 # −5
guest 15.04.2017 03:50 # −5
guest 15.04.2017 04:39 # −5
guest 15.04.2017 04:57 # −5
guest 15.04.2017 06:44 # −5
guest 15.04.2017 07:47 # −5
guest 15.04.2017 08:34 # −5
guest 15.04.2017 14:52 # −5
guest 15.04.2017 15:34 # −5
guest 15.04.2017 16:25 # −5
guest 15.04.2017 19:58 # −5
doktor 15.04.2017 20:01 # −11
guest 15.04.2017 22:41 # −11
guest 25.04.2017 05:16 # −5
guest 25.04.2017 11:39 # −5
guest 25.04.2017 12:56 # −5
guest 25.04.2017 13:14 # −5
guest 25.04.2017 17:47 # −5
guest 28.04.2017 13:25 # −5
guest 28.04.2017 18:11 # −5
guest 28.04.2017 22:41 # −5
guest 29.04.2017 02:54 # −5
guest 29.04.2017 12:35 # −5
guest 29.04.2017 13:21 # −5
guest 29.04.2017 21:57 # −5
guest 02.05.2017 02:43 # −5
guest 02.05.2017 02:52 # −5
guest 02.05.2017 04:15 # −5
guest 02.05.2017 04:27 # −5
guest 02.05.2017 11:13 # −5
guest 02.05.2017 19:33 # −5
guest 05.05.2017 20:32 # −12
barop 05.05.2017 20:36 # −6
guest 05.05.2017 20:36 # −6
guest 05.05.2017 20:37 # 0
guest 05.05.2017 20:41 # −12
купить гандоны онлайн, http://127.0.0.1
guest 05.05.2017 20:43 # −12
Заказать резиновую бабу онлайн, наложенным платежём:
https://president.rf
guest 05.05.2017 20:45 # 0
Постить ссылки с гостя - дурной тон, господа.
guest 05.05.2017 20:46 # 0
Стыдитесь, госссспода.
guest 30.05.2017 02:15 # 0
guest 05.05.2017 20:46 # −12
guest 05.05.2017 20:46 # 0
guest 05.05.2017 20:46 # −12
guest 05.05.2017 20:47 # 0
guest 05.05.2017 20:48 # 0
guest 05.05.2017 20:48 # 0
guest 05.05.2017 20:50 # 0
guest 06.05.2017 15:37 # −6
guest 06.05.2017 17:07 # −6
guest 06.05.2017 18:41 # −6
guest 30.05.2017 00:04 # 0
guest 30.05.2017 01:25 # 0
guest 30.05.2017 01:32 # 0
guest 30.05.2017 01:53 # 0
guest 30.05.2017 02:15 # 0
guest 30.05.2017 03:18 # 0
guest 30.05.2017 03:30 # 0
guest 30.05.2017 03:47 # 0
guest 30.05.2017 04:41 # 0
guest 30.05.2017 06:57 # 0
guest 30.05.2017 07:31 # 0
guest 30.05.2017 09:22 # 0
guest 30.05.2017 09:26 # 0
guest 30.05.2017 09:50 # 0
guest 30.05.2017 11:09 # 0
guest 30.05.2017 14:10 # 0
guest 30.05.2017 15:24 # 0
guest 30.05.2017 17:45 # 0
guest 30.05.2017 18:14 # 0
guest 30.05.2017 19:20 # 0
guest 30.05.2017 21:09 # 0
guest 30.05.2017 22:51 # 0
guest 02.06.2017 00:05 # 0
guest 02.06.2017 00:43 # 0
guest 02.06.2017 00:44 # 0
guest 02.06.2017 00:45 # 0
guest 02.06.2017 03:37 # 0
guest 02.06.2017 05:02 # 0
guest 02.06.2017 06:04 # 0
guest 02.06.2017 06:45 # 0
guest 02.06.2017 08:49 # 0
guest 02.06.2017 08:57 # 0
guest 02.06.2017 08:58 # 0
guest 02.06.2017 10:18 # 0
guest 02.06.2017 10:33 # 0
guest 02.06.2017 10:40 # 0
guest 02.06.2017 14:23 # 0
guest 02.06.2017 15:40 # 0
guest 02.06.2017 16:10 # 0
guest 02.06.2017 17:23 # 0
guest 02.06.2017 17:38 # 0
guest 02.06.2017 17:55 # 0
guest 02.06.2017 18:45 # 0
guest 02.06.2017 19:42 # 0
guest 02.06.2017 20:21 # 0
guest 02.06.2017 20:53 # 0
guest 02.06.2017 21:46 # 0
guest 02.06.2017 23:09 # 0
guest 03.06.2017 00:11 # 0
guest 03.06.2017 01:05 # 0
guest 03.06.2017 04:35 # 0
guest 03.06.2017 04:56 # 0
guest 03.06.2017 05:11 # 0
guest 03.06.2017 05:11 # 0
guest 03.06.2017 05:19 # 0
guest 03.06.2017 05:48 # 0
guest 03.06.2017 06:12 # 0
guest 03.06.2017 07:03 # 0
guest 03.06.2017 09:50 # 0
guest 03.06.2017 11:36 # 0
guest 03.06.2017 12:48 # 0
guest 03.06.2017 13:17 # 0
guest 03.06.2017 13:50 # 0
guest 03.06.2017 14:13 # 0
guest 03.06.2017 16:40 # 0
guest 03.06.2017 18:07 # 0
guest 03.06.2017 18:07 # 0
guest 03.06.2017 21:45 # 0
guest 03.06.2017 21:50 # 0
guest 03.06.2017 22:04 # 0