小编jus*_*ker的帖子

在Haskell中实现liftM2

对于练习,我一直在尝试使用函数ap和liftM来实现liftM2.功能定义为:

ap :: IO (a -> b) -> IO a -> IO b
liftM :: (a -> b) -> IO a -> IO b

liftM2 :: (a -> b -> c) -> IO a -> IO b -> IO c
Run Code Online (Sandbox Code Playgroud)

我可以使用do notation轻松做liftM2,但不知道如何使用ap和liftM来做到这一点.我想将结果看起来像这样:

liftM2 f a b = liftM (_) (ap _ a)
Run Code Online (Sandbox Code Playgroud)

我很困惑如何弄乱f,这是(a - > b - > c),这样我就可以将a转为b,b转为c.谢谢.

haskell functional-programming

3
推荐指数
1
解决办法
172
查看次数

在 Java AES 加密中使用提供程序

这可能是一个菜鸟问题,但我对提供商的工作方式感到困惑。我尝试阅读此https://docs.oracle.com/javase/7/docs/technotes/guides/security/overview/jsoverview.html,但它对我来说不太有意义。假设我们有:

Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding", "BC")
Run Code Online (Sandbox Code Playgroud)

Cipher cipher= Cipher.getInstance("AES/CBC/PKCS5Padding")
Run Code Online (Sandbox Code Playgroud)

根据链接,听起来提供商指示了正在使用的实现,但 AES/CBC/PKCS5Padding 基本上与提供商无关吗?在这个例子中,充气城堡(我猜“BC”对应的)是否碰巧有比默认实现更有效的算法?感谢您的时间。

java encryption cryptography bouncycastle

0
推荐指数
1
解决办法
1545
查看次数