type Mp3fsM a = ReaderT Mp3fsInternalData IO a
runMp3fsM f r = runReaderT f r
runMp3fsM1 f r = \x -> runReaderT (f x) r
runMp3fsM2 f r = \x -> \y -> runReaderT (f x y) r
runMp3fsM3 f r = \x -> \y -> \z -> runReaderT (f x y z) r
runMp3fsM4 f r = \x -> \y -> \z -> \t -> runReaderT (f x y z t) r
In lisp, this sort of thing could be handled by a macro.
Actual code I wrote (for https://github.com/stucchio/Mp3FS ):
In lisp, this sort of thing could be handled by a macro.