sách gpt4 ai đã đi

Haskell (a -> m a) -> m (a -> a) -> m (a -> a)

In lại 作者:行者123 更新时间:2023-12-02 02:01:34 26 4
mua khóa gpt4 Nike

在过去的几个月里,我一直在研究 Haskell,我遇到了一个我不太确定如何处理的单子(monad)的情况。

Tôi có một cái a -> m a 类型的值第二个类型为 m (a -> a)我需要对它们进行组合,以使第一个的结果最终作为第二个的输入并产生 m (a -> a)如果可能的话。在过去的一天里,我一直被困在这个问题上,我并没有把头绕在它上面。我想我正在寻找像 (a -> m a) -> m (a -> a) -> m (a -> a) 这样的函数.如果它更有意义,我可以提供一个更具体的例子。

1 Câu trả lời

一般来说,你不能这样做。问题在于您的结果类型:m (a -> a) .这是一个产生函数的单子(monad) Action ;但您的第一个输入格式为 a -> m a ,它(可能)为每个参数产生不同的一元 Action 。例如,对于 []单子(monad)[a -> a]是具有固定长度的函数列表,而 a -> [a]每个参数可以有不同的长度。所以没有办法将函数类型“推”回 tôi一般来说;见 What is the general case of QuickCheck's promote function?对于相关的 SO 问题。

nếu như a -> m a可以满足您的需要,然后您可以将 m (a -> a)参数到 a -> m asử dụng

\ x -> fmap ($ x) af

và sử dụng >=> (或 <=< ,从您的类型中不清楚)将函数组合在一起。

关于Haskell (a -> m a) -> m (a -> a) -> m (a -> a),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36436132/

26 4 0
Bài viết được đề xuất: 具有 PHP 安全问题的 Ajax
Bài viết được đề xuất: CVS 关键字对我不起作用
Bài viết được đề xuất: visual-studio - 使用数据库优先方法选择性地禁用延迟加载
Bài viết được đề xuất: regex - RewriteEngine On .htaccess 不工作
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com