Haskell-平均功能如何工作?

问题描述

我发现了平均值函数的这种实现:

kubectl get pods --field-selector=status.phase=Failed

这是如何工作的?我查看了avg :: [Int] -> Int avg = div . sum <*> length 产生的功能:

div . sum

我理解这一点,但是我无法确定(div . sum) :: (Integral a,Foldable t) => t a -> a -> a 是如何工作的。

解决方法

<*> :: Applicative f => f (a -> b) -> f a -> f b是在Applicative结构上运行的顺序应用程序函数。对于函数来说,这是implemented as [src]

function Do-SendKeys {
    param (
        $SENDKEYS,$WINDOWTITLE
    )
    $wshell = New-Object -ComObject wscript.shell;
    IF ($WINDOWTITLE) {$wshell.AppActivate($WINDOWTITLE)}
    Sleep 1
    IF ($SENDKEYS) {$wshell.SendKeys($SENDKEYS)}
}
Do-SendKeys -WINDOWTITLE Print -SENDKEYS '{TAB}{TAB}'
Do-SendKeys -WINDOWTITLE Print
Do-SendKeys -SENDKEYS '%{f4}'

所以instance Applicative ((->) r) where pure = const (<*>) f g x = f x (g x) liftA2 q f g x = q (f x) (g x)f <*> g的缩写。因此,这意味着对于\x -> f x (g x)

avg

等效于:

avg = div . sum <*> length

因此等同于:

avg x = (div . sum) x (length x)

因此它将avg x = div (sum x) (length x) 除以sum x

,

我不喜欢这种特殊的无意义技巧。它使用<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <title>Drag&droptodo</title> </head> <body> <header class="header"> <h1>The Drag&Drop2Do</h1> </header> <section class="worksection"> <div class="workrow"> <div class="workheader"> <p>Dagens opgaver</p> </div> </div> <div class="workrow"> <div class="workheader"> <p>Færdige opgaver</p> </div> </div> <div class="workrow"> <div class="workheader"> <p>Udskudte opgaver</p> </div> </div> </section> <div class="buttonwrapper"> <button id="btn">+</button> </div> </body> </html>实例作为“扇出”,将参数传递给两个单独的函数。本质上,这两个函数是Applicative (a->)sum,然后将结果合并到length处,可以用箭头组合器很好地表示出来(尽管有点冗长,因为箭头没有真的以Haskell的默认咖喱风格演奏):

div

在应用技巧中,将合并函数合并到第一个参数共享函数中。因此,在这种情况下,import Control.Arrow avg = uncurry div . (sum &&& length) 将另一个函数div . sum result 传递给第一个函数的第二个参数。

您也可以使用

length

也使用avg = liftA2 div sum length 实例。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...