有没有标准库类似物:

kar*_*oss 4 haskell

在编写一些算法问题时,我已经使用了这些函数,我想知道是否有任何标准库类似物实现它们的功能:

将函数列表映射到一个值:

mapX :: a -> [a -> b] -> [b]
mapX _ [] = []
mapX x (f:fs) = [f x] ++ (mapX x fs)
Run Code Online (Sandbox Code Playgroud)

将二进制函数映射到两个列表:

map2 :: (a -> b -> c) -> [a] -> [b] -> [c]
map2 _ [] [] = []
map2 f (ax:axs) (bx:bxs) = [f ax bx] ++ map2 f axs bxs
Run Code Online (Sandbox Code Playgroud)

对我来说,有点奇怪all [] == True:(

all' :: (a -> Bool) -> [a] -> Bool
all' _ [] = False
all' f l  = all f l
Run Code Online (Sandbox Code Playgroud)

^运算符是否实现快速取幂?

fastPow :: Int -> Int -> Int
fastPow x 0 = 1
fastPow x a
    | even a     = exp2 * exp2
    | odd a      = exp2 * exp2 * x
    where
        exp2 = fastPow x (div a 2)
Run Code Online (Sandbox Code Playgroud)

int*_*jay 14

将函数列表映射到一个值:

map ($x) fs
Run Code Online (Sandbox Code Playgroud)

$是函数应用程序运算符,因此($x)是一个将其参数应用于的函数x.

将二进制函数映射到两个列表:

zipWith.即使您通过在Hoogle上搜索类型签名而不知道函数名称,也可以找到此内容.

^运算符是否实现快速取幂?

是的.