6
Mając akcję monada Writer
, chcę ją zmodyfikować poprzez odwzorowanie funkcji na dane zapisane w akcji monad.Zmienianie zapisanych danych w monitorze Writer
Coś jak:
retell :: (w -> w') -> Writer w a -> Writer w' a
Czy taka funkcja już istnieje w bibliotekach? Jeśli nie, jak można to zdefiniować?
Można to zrobić przez łańcuchowym 'pass' metoda w klasie MonadWriter? Gdyby nie to, zrobiłbym własną podklasę Writer - 'Rewriter' która zapewnia operację' retell'. –
@stephentetley - poprawiam się, gdy chcesz wpisać zmienić 'w' monitu Writer, którego nie możesz zrobić za pomocą' pass'. Poszedłbym z podklasą 'Redaktora', która rozszerza' Writer' o 'retell'. –