Nếu tôi có một chồng monads, hãy nói IO
, State
và Error
và chức năng chỉ sử dụng IO
và Error
. Làm thế nào sẽ đi về "loại bỏ" giữa State
monad từ ngăn xếp để tôi có thể sử dụng chức năng của tôi? Nếu đơn hàng là IO
, Error
, State
, tôi có thể sử dụng lift
để khớp với các loại, nhưng tôi muốn có thể sử dụng chức năng của mình nếu ngăn đơn nguyên chứa IO
và Error
và có thể là các đơn vị khác theo thứ tự bất kỳ. Ví dụ:Thao tác ngăn xếp đơn nguyên
fun :: ErrorT String IO()
fun = throwError "error"
someCode :: ErrorT String (StateT Int IO)()
someCode = do
-- I want to use fun here
Đây là tuyệt vời, cảm ơn! –