繁体   English   中英

如何在Haskell中使用部分函数

[英]How To with Partial Function Application in Haskell

我正在尝试使用部分应用程序来缩短以下有效的函数定义:

ltest50 n = take 50 (iterate ltestonce n)

我想到的是:

ltest50 = take 50 (iterate ltestonce)

要么

ltest50 = take 50 (iterate ltestonce$)

会成功的,但没有喜悦。 在Haskell中执行此操作的最佳方法是什么?

Haskell为此具有“ 点运算符 ”或“ 函数组合(.) :: (b -> c) -> (a -> b) -> a -> c

ltest50 n = take 50 (iterate ltestonce n)

等效于:

ltest50 = take 50 . iterate ltestonce

(.)定义为:

(.) :: (b -> c) -> (a -> b) -> a -> c
(.) f g x = f (g x)

或更短:

(.) :: (b -> c) -> (a -> b) -> a -> c
(.) f g x = f $ g x

由于它是放在方括号之间的符号,因此它可以用作. 作为中缀运算符,因此:

ltest50 = take 50 . iterate ltestonce

是“ 语法糖 ”,用于:

ltest50 = (.) (take 50) (iterate ltestonce)

至少在佛兰德斯(比利时,荷兰一部分)操作有时非正式称为“后”,因为你申请f您已经申请后g上的变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM