Имеет ли Scala оператор, похожий на Haskell `$`?
Имеет ли 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) [email protected],
-- or @'Data.List.zipWith' ('$') fs [email protected]
{-# INLINE ($) #-}
($) :: (a -> b) -> a -> b
f $ x = f x
Ответы
Ответ 1
Да, он написал "apply"
fn apply arg
Для этого нет стандартного оператора пунктуации, но было бы легко добавить один через путаницу библиотеки.
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. Таким образом, существует меньше выигрышей для создания таких операторов, как "$" и ".".