Haskell 如何将一元值馈送给另一个一元值?
让我有一个Haskell 如何将一元值馈送给另一个一元值?,haskell,Haskell,让我有一个 F1::K字符串 F2::L() 如何从F2调用F1 K和L都是呻吟者。所以我在找类似的东西 (a->L b)->K a->L b Hoogle搜索结果在 foldMapM::(Monad m,Monoid w,Foldable t)=>(a->mw)->ta->mw 在我的例子中,它与我想要的匹配,就像在t中一样,是不可折叠的。一般来说,没有办法做到这一点。例如,您不能轻易地从ma传递到Identity a,否则您可以创建一个函数ma->a,我们不希望每个monadm(尤其是IO)
F1::K字符串
F2::L()
如何从F2调用F1
K和L都是呻吟者。所以我在找类似的东西
(a->L b)->K a->L b
Hoogle搜索结果在
foldMapM::(Monad m,Monoid w,Foldable t)=>(a->mw)->ta->mw
在我的例子中,它与我想要的匹配,就像在
t
中一样,是不可折叠的。一般来说,没有办法做到这一点。例如,您不能轻易地从ma
传递到Identity a
,否则您可以创建一个函数ma->a
,我们不希望每个monadm
(尤其是IO
)都有这个函数。哦,这很有意义,谢谢,一般来说这是不可能的,但是如果你有一个更具体的例子,也许我们可以解决这个问题。当我们不得不“更改monad”时,我们有时会使用一个特定的类型类来有选择地允许更改。例如,MonadIO
类用于那些monadm
允许转换liftIO::IO a->ma
,从而可以在m
内部“运行IO”。这不可能适用于所有单子,但如果可能,我们可以将单子标记为MonadIO
one。您可以对任何其他单子使用相同的技术,但是您仍然需要逐个定义转换,因为没有通用的方法进行。我也可以制作一个新的单子单子?在一个新的单子X中组合K和L,然后实现我想做的事情?这是一个合理的方法吗?一般来说,没有办法做到这一点。例如,您不能轻易地从ma
传递到Identity a
,否则您可以创建一个函数ma->a
,我们不希望每个monadm
(尤其是IO
)都有这个函数。哦,这很有意义,谢谢,一般来说这是不可能的,但是如果你有一个更具体的例子,也许我们可以解决这个问题。当我们不得不“更改monad”时,我们有时会使用一个特定的类型类来有选择地允许更改。例如,MonadIO
类用于那些monadm
允许转换liftIO::IO a->ma
,从而可以在m
内部“运行IO”。这不可能适用于所有单子,但如果可能,我们可以将单子标记为MonadIO
one。您可以对任何其他单子使用相同的技术,但是您仍然需要逐个定义转换,因为没有通用的方法进行。我也可以制作一个新的单子单子?在一个新的单子X中组合K和L,然后实现我想做的事情?这是一个合理的方法吗?