[英]How can two similar functions have different polymorphic types in Haskell?
[英]Does Scala have an operator similar to Haskell's `$`?
Scala是否有类似于Haskell $
的运算符?
-- | Application operator. This operator is redundant, since ordinary
-- application @(f x)@ means the same as @(f '$' x)@. However, '$' has
-- low, right-associative binding precedence, so it sometimes allows
-- parentheses to be omitted; for example:
--
-- > f $ g $ h x = f (g (h x))
--
-- It is also useful in higher-order situations, such as @'map' ('$' 0) xs@,
-- or @'Data.List.zipWith' ('$') fs xs@.
{-# INLINE ($) #-}
($) :: (a -> b) -> a -> b
f $ x = f x
是的,写的是“申请”
fn apply arg
这没有标准的标点符号操作符,但通过库pimping添加一个很容易。
class RichFunction[-A,+B](fn: Function1[A, B]){ def $(a:A):B = fn(a)}
implicit def function2RichFunction[-A,+B](t: Function1[A, B]) = new RichFunction[A, B](t)
通常,虽然Scala代码比Java密集得多,但它并不像Haskell那么密集。 因此,创建“$”和“。”等运算符的收益较少。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.