gpt4 book ai didi

haskell - 结合功能与列表理解

转载 作者:行者123 更新时间:2023-12-01 08:59:17 24 4
gpt4 key购买 nike

我有一个简单的问题:

combine :: (a -> b -> c) -> [a] -> [b] -> [c]
combine f (a:as) (b:bs) = f a b : combine f as bs
combine _ _ _ = [ ]

这是递归的。现在我想使用列表推导来解决同样的问题:

combine f (x:xs) (y:ys) = [ f x y  | x <- (x:xs), y <- (y:ys) ]

但我的问题是元素的组合。我只想结合 x1 y1, x2 y2, xs ys ... 而不是 x1 y1, x1 y2, x1 ys, x2 y1, x2 y2, ......

谢谢!

最佳答案

您需要的是 parallel list compehension .为了能够使用它,您需要为编译器指定一个 ParallelListComp pragma:

{-# LANGUAGE ParallelListComp #-}

combine :: (a -> b -> c) -> [a] -> [b] -> [c]
combine f xs ys = [ f x y | x <- xs | y <- ys ]

编译器将其脱糖到 zipWith 的应用程序中:

combine :: (a -> b -> c) -> [a] -> [b] -> [c]
combine f xs ys = zipWith f xs ys

这实际上是你的功能,所以:

combine :: (a -> b -> c) -> [a] -> [b] -> [c]
combine = zipWith

关于haskell - 结合功能与列表理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21384704/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com